Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
Симптом
Развертывание изменений API-прокси через пользовательский интерфейс Edge или API управления завершается ошибкой тайм-аута.
Сообщения об ошибках
Click to change deployment status. The revision is deployed and traffic can flow, but flow may be impaired. Error: Call timed out; either server is down or server is not reachable
Возможные причины
Типичные причины этой проблемы:
| Причина | Подробности | Для |
| Проблема с сетевым подключением | Сбой связи между сервером управления и обработчиком сообщений из-за проблем с сетевым подключением или правил брандмауэра. | Только для пользователей частного облака |
| Большой пакет API-прокси | Активация обработчика сообщений может занять много времени, если пакет API-прокси имеет большой размер, что приводит к таймаутам RPC. | Пользователи частных и публичных облачных сервисов |
Проблема с сетевым подключением
Примечание: Следующие действия могут выполнять только пользователи частного облака Edge. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .
Диагноз
- Получите статус развертывания для конкретного API, вызывающего ошибку, используя следующий вызов API управления:
curl -v http://<management-server-IPaddress>:<port#>/organizations/<orgname>/environments/<envname>/apis/<apiname>/deployments -u <username>
Пример выходных данных, демонстрирующий ошибку:
{ "error": "Call timed out; either server is down or server is not reachable", "status": "error", "type": [ "message-processor" ], "uUID": "ebbc1078-cbde-4a00-a7db-66a3c1b2b748" }, { "status": "deployed", "type": [ "message-processor" ], "uUID": "204e2b7e-52f7-46d9-b458-20f9bfb51e6d" }, { "status": "deployed", "type": [ "router" ], "uUID": "967e63c6-ee95-47c0-9608-f4a32638fb1e" }, { "status": "deployed", "type": [ "router" ], "state" : "error" }
Приведенный выше пример выходных данных показывает, что ошибка произошла на одном из обработчиков сообщений с UUID "
ebbc1078-cbde-4a00-a7db-66a3c1b2b748". - На основе данных о состоянии развертывания вашего API-прокси войдите в каждый из обработчиков сообщений, используя соответствующий UUID, в котором была обнаружена ошибка, и выполните следующие действия:
- Проверьте, прослушивает ли обработчик сообщений порт 4528:
netstat -an | grep LISTEN | grep 4528
Если обработчик сообщений не прослушивает порт 4528, перезапустите обработчик сообщений:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Повторно проверьте состояние развертывания API-прокси, используя вызов API управления, показанный на шаге №1 выше. Если ошибок нет, это означает, что проблема решена.
- Проверьте, прослушивает ли обработчик сообщений порт 4528:
- Если проблема сохраняется, проверьте подключение сервера управления к обработчику сообщений через порт 4528, выполнив следующие действия:
- Если доступен telnet, используйте его:
telnet <MessageProcessor_IP> 4528
- Если telnet недоступен, проверьте подключение с помощью netcat следующим образом:
nc -vz <MessageProcessor_IP> 4528
- Если вы получили сообщение "Соединение отклонено" или "Время ожидания соединения истекло", обратитесь в свою группу по эксплуатации сети.
- Если доступен telnet, используйте его:
- Проверьте соединение между обработчиком сообщений и сервером управления через порт 4526, выполнив следующие шаги:
- Если доступен telnet, используйте его:
telnet <management-server-IP> 4526
- Если telnet недоступен, проверьте подключение с помощью netcat следующим образом:
nc -vz <management-server-IP> 4526
- Если вы получили сообщение "Соединение отклонено" или "Время ожидания соединения истекло", обратитесь за помощью к группе специалистов по эксплуатации сети.
- Если доступен telnet, используйте его:
- В сотрудничестве с вашей командой по эксплуатации сети выполните следующие действия:
- Убедитесь, что протокол RPC разрешен как на сервере управления, так и на обработчике сообщений.
- Удалите все ограничения брандмауэра или правила безопасности, настроенные между серверами управления и обработчиками сообщений, чтобы разрешить подключение к порту 4526 на сервере управления, а также подключение от сервера управления к обработчикам сообщений через порт 4528.
- Повторно проверьте статус развертывания (см. шаг №1 выше). Если ошибок не обнаружено, значит, проблема решена.
- Если проблема сохраняется, проверьте, нет ли проблем с сетью на обработчике сообщений. Если проблема связана с сетью, перезапуск конкретного обработчика сообщений, отображающего ошибку тайм-аута (согласно выводу о состоянии развертывания), может решить проблему:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- Если проблема сохраняется, проверьте журналы сервера управления по адресу: (
/opt/apigee/var/log/edge-management-server/logs/system.log).Ошибка "Время ожидания вызова истекло" из журнала сервера управления.
2016-05-17 09:29:56,448 org:myorg env:prod qtp281969267-360792 ERROR DISTRIBUTION - RemoteServicesConfigEventHandler.configureServers() : exception for server with uuid e1381db7-d83b-4752-ae04-2de33f07e555 : cause = RPC Error 504: Call timed out communication error = true com.apigee.rpc.RPCException: Call timed out at com.apigee.rpc.impl.AbstractCallerImpl.handleTimeout(AbstractCallerImpl.java:64) ~[rpc-1.0.0.jar:na] at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.handleTimeout(RPCMachineImpl.java:483) ~[rpc-1.0.0.jar:na] at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall.access$000(RPCMachineImpl.java:402) ~[rpc-1.0.0.jar:na] at com.apigee.rpc.impl.RPCMachineImpl$OutgoingCall$1.run(RPCMachineImpl.java:437) ~[rpc-1.0.0.jar:na] at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:532) ~[netty-all-4.0.0.CR1.jar:na] at io.netty.util.HashedWheelTimer$Worker.notifyExpiredTimeouts(HashedWheelTimer.java:430) ~[netty-all-4.0.0.CR1.jar:na] at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:371) ~[netty-all-4.0.0.CR1.jar:na] at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_79]
Если вы наблюдаете ошибку, аналогичную показанной в приведенном выше примере, увеличьте время ожидания RPC на сервере управления, чтобы в случае замедления сети у сервера управления было время для подключения к обработчику сообщений.
Разрешение
Примечание: Следующие действия могут выполнять только пользователи частного облака Edge. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .
- Для увеличения времени ожидания RPC выполните следующие действия:
- Если файл
/opt/apigee/customer/application/management-server.propertiesеще не существует на машине сервера управления, создайте его. - Добавьте в этот файл следующую строку:
conf_cluster_rpc.connect.timeout=<time in seconds>
Значение таймаута RPC по умолчанию равно 10, рекомендуется увеличить его до 40 секунд. Установите его следующим образом:
conf_cluster_rpc.connect.timeout=40
- Убедитесь, что владельцем этого файла является пользователь apigee:
chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- Перезапустите сервер управления:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Если у вас несколько серверов управления, повторите описанные выше шаги на всех серверах управления.
- Разверните API-прокси в пользовательском интерфейсе Edge или с помощью вызова API управления Edge. Если развертывание API-прокси пройдет без проблем, это будет означать, что проблема решена.
- Если файл
- Если проблема сохраняется, соберите данные команды tcpdump с сервера управления и обработчика сообщений. Включите команду tcpdump на каждом из серверов, а затем запустите развертывание API-прокси из пользовательского интерфейса или с помощью API управления.
- Выполните следующую команду tcpdump на сервере управления:
tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
- Выполните следующую команду tcpdump из обработчика сообщений:
tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
- Обратитесь в службу поддержки Apigee Edge за помощью в анализе дампов TCP и дальнейшем устранении проблемы.
- Выполните следующую команду tcpdump на сервере управления:
Большой пакет API-прокси
Диагноз
- Проверьте размер пакета API-прокси, для которого наблюдается ошибка развертывания.
- Если размер достаточно велик (10 МБ или больше), то весьма вероятно, что обработчику сообщений потребуется больше времени для активации прокси-сервера API.
- Если размер пакета API-прокси превышает 15 МБ, перейдите к разделу "Пакет API-прокси больше 15 МБ" .
Разрешение
Примечание: Следующие действия могут выполнять только пользователи частного облака Edge. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .
Увеличьте время ожидания RPC на сервере управления, чтобы у обработчика сообщений было достаточно времени для активации больших пакетов прокси-серверов API. Для увеличения значения времени ожидания RPC выполните следующие действия:
- Если файл
/opt/apigee/customer/application/management-server.propertiesеще не существует, создайте его на компьютере с сервером управления. - Добавьте в этот файл следующую строку:
conf_cluster_rpc.connect.timeout=<time in seconds>
Значение таймаута RPC по умолчанию равно 10, рекомендуется увеличить его до 40 секунд. Установите его следующим образом:
conf_cluster_rpc.connect.timeout=40
- Убедитесь, что владельцем этого файла является пользователь apigee:
chown apigee:apigee /opt/apigee/customer/application/management-server.properties
- Перезапустите сервер управления:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
- Если у вас несколько серверов управления, повторите описанные выше шаги на всех серверах управления.
Если проблема не исчезнет, обратитесь в службу поддержки Apigee Edge за дополнительной помощью.