Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Symptom
Развертывание версий прокси-сервера API через интерфейс Edge или вызов API управления Edge завершается с ошибкой "Error while accessing datastore".
Сообщения об ошибках
Error in deployment for environment qa. The revision is deployed, but traffic cannot flow. Error while accessing datastore;Please retry later
Возможные причины
Обычно это происходит по следующим причинам:
-
Cause Подробнее… Для Проблема с сетевым подключением между Message Processor и Cassandra Сбой связи между Message Processor и Cassandra из-за проблем с сетевым подключением или правил брандмауэра. Пользователи Edge Private Cloud Ошибки развертывания из-за перезапусков Cassandra Узел Cassandra был недоступен, поскольку был перезапущен в рамках планового технического обслуживания. Пользователи Edge Private Cloud Резкое увеличение задержки при обработке запросов на чтение в Cassandra Если узел Cassandra выполняет большое количество одновременных операций чтения, он может медленно отвечать из-за скачка задержки запроса на чтение. Пользователи Edge Private Cloud Размер пакета прокси API превышает 15 МБ В Cassandra настроено ограничение на размер пакетов прокси-серверов API – не более 15 МБ. Пользователи Edge Private Cloud Проблема с подключением к сети между процессором сообщений и Cassandra
диагностика;
Примечание. Следующие шаги могут выполнить только пользователи Edge Private Cloud. Если вы используете общедоступное облако Edge, обратитесь в службу поддержки Apigee Edge.
- Отмените развертывание и повторно разверните прокси-сервер API. Если между Message Processor и Cassandra возникла временная проблема с подключением, ошибка может исчезнуть.
ВНИМАНИЕ! Не отменяйте развертывание, если ошибки наблюдаются в рабочей среде.
- Если проблема не исчезнет, выполните приведенный ниже вызов API управления, чтобы проверить статус развертывания и наличие ошибок в компонентах:
curl -u sysadmin@email.com https://management:8080/v1/o/<org>/apis/<api>/deployments
Пример вывода статуса развертывания, в котором показана ошибка при доступе к хранилищу данных на одном из процессоров сообщений
{ "environment" : [ { "aPIProxy" : [ { "name" : "simple-python", "revision" : [ { "configuration" : { "basePath" : "/", "steps" : [ ] }, "name" : "1", "server" : [ { "status" : "deployed", "type" : [ "message-processor" ], "uUID" : "2acdd9b2-17de-4fbb-8827-8a2d4f3d7ada" }, { "error" : "Error while accessing datastore;Please retry later", "errorCode" : "datastore.ErrorWhileAccessingDataStore", "status" : "error", "type" : [ "message-processor" ], "uUID" : "42772085-ca67-49bf-a9f1-c04f2dc1fce3" } "state" : "error" }
- Перезапустите Message Processor(s), в которых возникла ошибка развертывания. Если проблема с сетью была временной, ошибка должна исчезнуть:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Повторите шаг 2, чтобы проверить, удалось ли развертывание на перезапущенном Message Processor. Если ошибок нет, значит проблема решена.
- Проверьте, может ли процессор сообщений подключиться к каждому узлу Cassandra через порты 9042 и 9160:
- Если telnet доступен, используйте его:
telnet <Cassandra_IP> 9042 telnet <Cassandra_IP> 9160
- Если telnet недоступен, используйте netcat, чтобы проверить подключение, как описано ниже.
nc -vz <Cassandra_IP> 9042 nc -vz <Cassandra_IP> 9160
- Если вы получили ответ "Подключение отклонено" или "Время ожидания подключения истекло", обратитесь к команде по эксплуатации сети.
- Если telnet доступен, используйте его:
- Если проблема не исчезнет, проверьте, прослушивает ли каждый из узлов Cassandra порты 9042 и 9160:
netstat -an | grep LISTEN | grep 9042 netstat -an | grep LISTEN | grep 9160
- Если узлы Cassandra не прослушивают порты 9042 или 9160, перезапустите нужные узлы Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- Если проблема не исчезнет, обратитесь к команде по эксплуатации сети.
- Отмените развертывание и повторно разверните прокси-сервер API. Если между Message Processor и Cassandra возникла временная проблема с подключением, ошибка может исчезнуть.
Разрешение
Обратитесь к команде по эксплуатации сети и устраните проблему с подключением между процессором сообщений и Cassandra.
Ошибки развертывания из-за перезапуска Cassandra
Узлы Cassandra обычно перезапускаются периодически в рамках планового обслуживания. Если во время обслуживания Cassandra развертываются прокси API, развертывание завершается неудачно из-за недоступности хранилища данных Cassandra.
Примечание. Следующие шаги могут выполнить только пользователи Edge Private Cloud. Если вы используете общедоступное облако Edge, обратитесь в службу поддержки Apigee Edge.
диагностика;
- Проверьте, перезапускались ли узлы Cassandra во время развертывания.Это можно сделать, посмотрев журнал Cassandra или журналы последнего времени запуска узла Cassandra:
grep"shutdown"/opt/apigee/var/log/apigee-cassandra/system.log
Разрешение
- Убедитесь, что Cassandra запущена и работает.
- Проверьте, могут ли процессоры сообщений подключаться к хранилищу данных Cassandra через порты 9042 и 9160.
Внезапный рост задержки запросов на чтение в Cassandra
Большое количество операций чтения в Cassandra зависит от конкретных вариантов использования и шаблонов трафика на прокси-серверах, содержащих правила, требующие доступа на чтение из Cassandra.
Например, если для правил OAuth вызывается запрос GET к типу предоставления refresh_token, а токен обновления связан с большим количеством токенов доступа, это может привести к большому количеству операций чтения из Cassandra. Это может привести к увеличению задержки запросов на чтение в Cassandra.
Диагностика
Примечание. Следующие шаги могут выполнить только пользователи Edge Private Cloud. Если вы используете общедоступное облако Edge, обратитесь в службу поддержки Apigee Edge.

- Если вы установили бета-версию панели мониторинга, откройте панель Cassandra и изучите график "Запросы на чтение" за период, когда возникла проблема. Также изучите диаграмму "Задержки запросов на чтение".
- Другой инструмент для проверки запросов на чтение и задержек чтения – команда
nodetool cfstats. Подробную информацию об использовании этой команды можно найти в документации по Cassandra.
Разрешение
Примечание. Следующие шаги могут выполнить только пользователи Edge Private Cloud. Если вы используете общедоступное облако Edge, обратитесь в службу поддержки Apigee Edge.
- Повторите попытку развертывания, когда производительность Cassandra восстановится. Убедитесь, что все узлы Cassandra работают нормально.
- (Необязательно) Выполните последовательный перезапуск процессоров сообщений, чтобы убедиться в установлении подключения.
- Чтобы решить проблему в долгосрочной перспективе, изучите шаблоны трафика API, которые могут привести к увеличению количества операций чтения в хранилище данных Cassandra. Чтобы устранить эту проблему, обратитесь в службу поддержки Apigee Edge.
- Если существующие узлы Cassandra не справляются с входящим трафиком, увеличьте аппаратную мощность или количество узлов хранилища данных Cassandra.
API Размер пакета прокси-сервера превышает 15 МБ
Размер пакетов прокси-серверов API в Cassandra ограничен 15 МБ. Если размер пакета прокси-сервера API превышает 15 МБ, при попытке развернуть прокси-сервер API появится сообщение "Ошибка при доступе к хранилищу данных".
диагностика;
Примечание. Следующие шаги могут выполнить только пользователи Edge Private Cloud. Если вы используете общедоступное облако Edge, обратитесь в службу поддержки Apigee Edge.
- Проверьте журналы Message Processor (
/opt/apigee/var/log/edge-message-processor/logs/system.log) и посмотрите, не возникли ли ошибки при развертывании определенного прокси API. - Если вы видите ошибку, похожую на ту, что показана на рисунке ниже, значит, ошибка развертывания связана с тем, что размер пакета прокси-сервера API превышает 15 МБ.
2016-03-23 18:42:18,517 main ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.fetchDynamicCompositeColumns() : Error while querying columnfamily : [api_proxy_revisions_r21, adevegowdat@v1-node-js] for rowkey:{} com.netflix.astyanax.connectionpool.exceptions.TransportException: TransportException: [host=None(0.0.0.0):0, latency=159(486), attempts=3]org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)! at com.netflix.astyanax.thrift.ThriftConverter.ToConnectionPoolException(ThriftConverter.java:197) ~[astyanax-thrift-1.56.43.jar:na] at com.netflix.astyanax.thrift.AbstractOperationImpl.execute(AbstractOperationImpl.java:65) ~[astyanax-thrift-1.56.43.jar:na] ...<snipped> Caused by: org.apache.thrift.transport.TTransportException: Frame size (20211500) larger than max length (16384000)! at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:137) ~[libthrift-0.9.1.jar:0.9.1] at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) ~[libthrift-0.9.1.jar:0.9.1] at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) ~[libthrift-0.9.1.jar:0.9.1] ...<snipped>
Разрешение
Пакет прокси-сервера API будет большим, если в нем слишком много файлов ресурсов. Чтобы устранить эту проблему, воспользуйтесь следующими решениями:
Решение 1. Переместите файлы ресурсов на уровень среды или организации
- Переместите любые файлы ресурсов, например файлы скриптов и модулей NodeJS, файлы JavaScript, файлы JAR, на уровень среды или организации. Дополнительную информацию о файлах ресурсов можно найти в документации по Edge.
- Разверните прокси-сервер API и проверьте, исчезла ли ошибка.
Если проблема не устранена или вы не можете перенести файлы ресурсов на уровень среды или организации, примените решение 2.
Решение 2. Увеличьте размер пакета прокси-сервера API в Cassandra
Примечание. Следующие шаги могут выполнить только пользователи Edge Private Cloud. Если вы используете общедоступное облако Edge, обратитесь в службу поддержки Apigee Edge.
Чтобы увеличить размер свойства Cassandra thrift frame transport size, которое определяет максимальный размер набора прокси-серверов API, разрешенного в Edge, выполните следующие действия:
- Создайте следующий файл, если его ещё нет:
/opt/apigee/customer/application/cassandra.properties
- Добавьте в файл следующую строку, заменив <size> на размер, необходимый для большого пакета:
conf_cassandra_thrift_framed_transport_size_in_mb=<size>
- Перезапустите Cassandra:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Повторите шаги 1–3 на всех узлах Cassandra в кластере.
Если проблема не исчезнет, обратитесь в службу поддержки Apigee Edge.