Ошибка тайм-аута

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Симптом

Развертывание версий прокси-сервера 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 Private Cloud. Если вы используете общедоступное облако Edge, обратитесь в службу поддержки Apigee Edge .

Диагностика

  1. Получите статус развертывания для конкретного 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 ».

  2. Основываясь на выводе статуса развертывания вашего прокси-сервера API, войдите в каждый из процессоров сообщений с соответствующим UUID, который показал ошибку, и выполните следующие шаги:
    1. Проверьте, прослушивает ли процессор сообщений порт 4528:
      netstat -an | grep LISTEN | grep 4528

      Если процессор сообщений не прослушивает порт 4528, перезапустите процессор сообщений:

      /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    2. Еще раз проверьте статус развертывания прокси-сервера API, используя вызов API управления, показанный на шаге 1 выше. Если ошибок нет, это означает, что проблема решена.
  3. Если проблема не устранена, проверьте подключение сервера управления к процессору сообщений через порт 4528, выполнив следующие действия:
    1. Если доступен telnet, используйте telnet:
      telnet <MessageProcessor_IP> 4528
    2. Если telnet недоступен, используйте netcat для проверки соединения следующим образом:
      nc -vz <MessageProcessor_IP> 4528
    3. Если вы получили ответ «Соединение отклонено» или «Время ожидания соединения истекло», обратитесь к команде по эксплуатации сети.
  4. Проверьте подключение процессора сообщений к серверу управления через порт 4526, выполнив следующие действия:
    1. Если доступен telnet, используйте telnet:
      telnet <management-server-IP> 4526
    2. Если telnet недоступен, используйте netcat для проверки соединения следующим образом:
      nc -vz <management-server-IP> 4526 
    3. Если вы получили ответ «Соединение отклонено» или «Время ожидания соединения истекло», обратитесь к команде по эксплуатации сети.
  5. Работайте со своей командой по эксплуатации сети и выполните следующие действия:
    1. Убедитесь, что протокол RPC разрешен как на сервере управления, так и на процессоре сообщений.
    2. Удалите все ограничения брандмауэра или настройки правил безопасности между серверами управления и процессорами сообщений, чтобы разрешить подключение к порту 4526 на сервере управления и подключение сервера управления к процессорам сообщений через порт 4528.
  6. Еще раз проверьте статус развертывания (см. шаг 1 выше). Если вы не видите никаких ошибок, это означает, что ошибка устранена.
  7. Если проблема не устранена, проверьте, нет ли проблем с сетью в процессоре сообщений. Если возникла проблема с сетью, перезапуск определенного процессора сообщений, который показывает ошибку тайм-аута (согласно выходным данным о состоянии развертывания), может решить проблему:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  8. Если проблема не устранена, проверьте журналы сервера управления по адресу: ( /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 Private Cloud могут выполнять следующие действия. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .

  1. Выполните следующие шаги, чтобы увеличить тайм-аут RPC:
    1. Создайте файл /opt/apigee/customer/application/management-server.properties на компьютере сервера управления, если он еще не существует.
    2. Добавьте в этот файл следующую строку:
      conf_cluster_rpc.connect.timeout=<time in seconds>

      Значение тайм-аута RPC по умолчанию равно 10, и рекомендуется увеличить его до 40 секунд. Установите его следующим образом:

      conf_cluster_rpc.connect.timeout=40
    3. Убедитесь, что этот файл принадлежит apigee:
      chown apigee:apigee /opt/apigee/customer/application/management-server.properties
    4. Перезапустите сервер управления:
      /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    5. Если у вас несколько серверов управления, повторите описанные выше шаги на всех серверах управления.
    6. Разверните прокси-сервер API в пользовательском интерфейсе Edge или с помощью вызова API управления Edge. Если прокси-сервер API развертывается без проблем, это означает, что проблема решена.
  2. Если проблема не устранена, соберите команду tcpdump с сервера управления и процессора сообщений. Включите команду tcpdump на каждом из серверов, а затем инициируйте развертывание прокси-сервера API из пользовательского интерфейса или с помощью API управления:
    1. Запустите приведенную ниже команду tcpdump на сервере управления:
      tcpdump -i any -s 0 host <message-processor-IP address> -w <File name>
    2. Запустите приведенную ниже команду tcpdump из процессора сообщений:
      tcpdump -i any -s 0 host <management-server-IP address> -w <File name>
    3. Обратитесь в службу поддержки Apigee Edge , чтобы получить помощь по анализу tcpdumps и дальнейшему устранению проблемы.

Большой пакет API-прокси

Диагностика

  1. Проверьте размер пакета прокси-сервера API, для которого наблюдается ошибка развертывания.
  2. Если размер достаточно велик (10 МБ или больше), вполне вероятно, что процессору сообщений потребуется больше времени для активации прокси-сервера API.
  3. Если размер пакета прокси-сервера API превышает 15 МБ, перейдите к пакету прокси-сервера API размером более 15 МБ .

Разрешение

Примечание. Следующие действия могут выполнять только пользователи Edge Private Cloud. Если вы используете публичное облако Edge, обратитесь в службу поддержки Apigee Edge .

Увеличьте время ожидания RPC на сервере управления, чтобы у процессора сообщений было достаточно времени для активации больших пакетов прокси API. Выполните следующие шаги, чтобы увеличить значение тайм-аута RPC:

  1. Создайте файл /opt/apigee/customer/application/management-server.properties на компьютере сервера управления, если он еще не существует.
  2. Добавьте в этот файл следующую строку:
    conf_cluster_rpc.connect.timeout=<time in seconds>

    Значение тайм-аута RPC по умолчанию равно 10, и рекомендуется увеличить его до 40 секунд. Установите его следующим образом:

    conf_cluster_rpc.connect.timeout=40
  3. Убедитесь, что этот файл принадлежит apigee:
    chown apigee:apigee /opt/apigee/customer/application/management-server.properties
  4. Перезапустите сервер управления:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. Если у вас несколько серверов управления, повторите описанные выше шаги на всех серверах управления.

Если проблема не устранена, обратитесь в службу поддержки Apigee Edge для получения дополнительной помощи.