503 Сервис недоступен

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

Видео

Для получения дополнительной информации об ошибках 503 смотрите следующие видеоролики:

Видео Описание
Устранение неполадок и исправление ошибки 503 «Сервис недоступен» из-за проблем с DNS. Узнайте о следующем:
  • Ошибка 503 Service Unavailable вызвана проблемами с разрешением DNS и сетью в Apigee Edge.
  • Устранение неполадок и решение проблемы с ошибкой 503 Service Unavailable в режиме реального времени, вызванной проблемой разрешения DNS-запросов.
Устранение неполадок и исправление ошибки 503 «Сервис недоступен» из-за проблем с сетью. Устранение неполадок и решение проблемы 503 Service Unavailable, возникающей в режиме реального времени из-за проблем с сетью в Apigee Edge.

Симптом

После вызова API-прокси клиентское приложение получает HTTP-ответ со статусом 503 и сообщением "Сервис недоступен" .

Сообщения об ошибках

Вы можете увидеть следующее сообщение об ошибке:

HTTP/1.1 503 Service Unavailable
      

В HTTP-ответе также может отображаться следующее сообщение об ошибке:

Сервис недоступен

{
   "fault": {
      "faultstring": "The Service is temporarily unavailable",
      "detail": {
           "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable"
       }
    }
}
      

Возможные причины

HTTP-ответ 503 Service Unavailable с кодом ошибки messaging.adaptors.http.flow.ServiceUnavailable возникает, если обработчик сообщений Apigee Edge испытывает ошибки из-за истечения времени ожидания соединения, неверного имени хоста или сбоев SSL-рукопожатия при обмене данными с бэкэнд-сервером.

Возможные причины ошибки 503 Service Unavailable :

Причина Описание Кто может выполнить действия по устранению неполадок?
Ошибки подключения из-за некорректного разрешения DNS. При разрешении DNS-запросов целевого сервера были получены некорректные IP-адреса, что привело к ошибкам подключения. Пользователи Edge Private Cloud
Ошибки подключения Проблемы с сетью или подключением к интернету препятствуют соединению клиента с сервером. Пользователи Edge Private Cloud
Неверное имя хоста целевого сервера. Указанный целевой сервер неверен или содержит нежелательные символы (например, пробелы). Пользователи публичных и частных облачных сервисов на периферии сети
Сбои при установлении SSL-соединения Соединение TLS/SSL между клиентом и сервером не удалось. (Устранение неполадок такого рода рассматривается в отдельной теме.) Пользователи публичных и частных облачных сервисов на периферии сети

Общие этапы диагностики

Определите идентификатор сообщения (Message ID) запроса, завершившегося с ошибкой.

инструмент трассировки

Чтобы определить идентификатор сообщения, в котором произошел сбой запроса, используя инструмент трассировки:

  1. Если проблема сохраняется, включите сеанс трассировки для затронутого API.
  2. Выполните вызов API и воспроизведите проблему — ошибка 503 Service Unavailable с кодом ошибки messaging.adaptors.http.flow.ServiceUnavailable.
  3. Выберите один из запросов, завершившихся неудачей.
  4. Перейдите к этапу AX и определите идентификатор сообщения ( X-Apigee.Message-ID ) запроса, прокрутив вниз в разделе « Подробности этапа» , как показано на следующем рисунке.

    Message ID in Phase Details section

Журналы доступа NGINX

Чтобы определить идентификатор сообщения, содержащего ошибку при выполнении запроса, используя журналы доступа NGINX:

Также можно обратиться к журналам доступа NGINX, чтобы определить идентификатор сообщения для ошибок 503. Это особенно полезно, если проблема возникала ранее или если она носит периодический характер, и вы не можете получить трассировку в пользовательском интерфейсе. Выполните следующие шаги, чтобы получить эту информацию из журналов доступа NGINX:

  1. Проверьте журналы доступа NGINX: ( /opt/apigee/var/log/edge-router/nginx/ <org>~ <env>.<port#>_access_log )
  2. Проверьте, были ли какие-либо ошибки 503 для конкретного API-прокси за определенный период времени (если проблема возникала ранее) или есть ли запросы, которые по-прежнему завершаются с ошибкой 503.
  3. Если возникают ошибки 503 с кодом X-Apigee-fault-code messaging.adaptors.http.flow.ServiceUnavailable , запишите идентификатор сообщения для одного или нескольких таких запросов, как показано в следующем примере:

    Пример записи, демонстрирующей ошибку 503.

    Sample entry showing status code, message ID, fault source, and fault code

Ошибки подключения из-за некорректного разрешения DNS.

Диагноз

  1. Определите идентификатор сообщения, в котором запрос завершился с ошибкой.
  2. Найдите идентификатор конкретного сообщения запроса в журнале обработчика сообщений ( /opt/apigee/var/log/edge-message-processor/logs/system.log ). Вы можете увидеть следующие ошибки:

    Ошибка onConnectTimeout указывает на то, что обработчик сообщений не смог подключиться к серверной части в течение заданного периода ожидания соединения (по умолчанию: 3 секунды).
    2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[Connected:]@164162 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11  resolvedAddress=www.abc.com/22.22.22.22
    
    2019-08-14 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
          
  3. Обратите внимание на полученный IP-адрес в сообщении об ошибке onConnectTimeout и проверьте, действителен ли этот IP-адрес для вашего бэкэнд-сервера. Если IP-адрес действителен, перейдите в раздел «Ошибки подключения» .
  4. Если IP-адрес недействителен, то, скорее всего, это связано с проблемами разрешения DNS-запросов.
  5. Повторите шаги 3 и 4 для нескольких других неудачных запросов к API и проверьте, видите ли вы те же или какие-либо другие недействительные IP-адреса.
  6. Просмотрите журнал обработчика сообщений ( /opt/apigee/var/log/edge-message-processor/logs/system.log ) на наличие сообщений, содержащих ключевое слово DNS Refresh . Периодически проверяйте, не добавляются ли в кэш DNS обработчика сообщений некорректные или недействительные IP-адреса.
    2019-08-14 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@0 INFO c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.reportDifferences() : DNS Refresh for host: apitarget-uat.schemeweb.co.uk:4436. Added 2 IPs [www.abc.com/22.22.22.22, www.abc.com/33.33.33.33] Removed 1 IPs [www.abc.com/11.11.11.11]
          
  7. Эта проблема может возникнуть, если есть какие-либо неполадки с авторитетными DNS-серверами или серверами имен, настроенными в файле /etc/resolv.conf .

    Как правило, для разрешения DNS-имен может быть настроен один или несколько авторитетных DNS-серверов. Если авторитетных DNS-серверов нет, то будет использоваться конфигурация, заданная в файле /etc/resolv.conf , и разрешение DNS-имен будет выполняться соответствующим образом. Например: если в файле /etc/resolv.conf указано использование определенных серверов имен, то для разрешения DNS-имен будут использоваться именно эти серверы имен.
  8. Если возникнут какие-либо проблемы с авторитетными DNS-серверами или серверами имен, указанными в файле /etc/resolv.conf , то имена хостов бэкэнд-серверов будут преобразованы в некорректные/недействительные IP-адреса. Некорректные/недействительные IP-адреса затем будут сохранены в кэше DNS обработчика сообщений.
    1. Если проблема с авторитетными DNS-серверами или серверами имен, указанными в файле /etc/resolv.conf сохраняется, то некорректные/недействительные IP-адреса будут продолжать оставаться в кэше DNS обработчика сообщений. Пока некорректные IP-адреса хранятся в кэше DNS обработчика сообщений, запросы ко всем этим API, использующим конкретный бэкэнд-сервер, будут завершаться ошибкой 503.
    2. Если проблемы с авторитетными DNS-серверами или серверами имен, указанными в файле /etc/resolv.conf носят периодический характер, то в кэше DNS будут периодически сохраняться как корректные, так и некорректные IP-адреса. В этом случае вы будете периодически видеть ошибки 503 для всех API, использующих данный бэкэнд-сервер.
  9. Если проблема с DNS-серверами постоянная, то вы будете наблюдать непрерывные сбои. Если проблема с DNS-серверами периодическая, то вы будете наблюдать периодические сбои. То есть, всякий раз, когда имя хоста бэкэнд-сервера преобразуется в некорректный IP-адрес, вы будете наблюдать ошибки 503. А когда имена хостов бэкэнд-сервера преобразуются в корректные IP-адреса, вы будете наблюдать успешные ответы.

Разрешение

Пожалуйста, обратитесь к администратору вашей операционной системы и устраните проблемы с DNS-серверами.

  1. Если возникла проблема с вашими авторитетными DNS-серверами или серверами имен, указанными в файле /etc/resolv.conf , устраните проблему на соответствующем сервере.
  2. Если на системах с обработчиками сообщений обнаружены какие-либо проблемы с конфигурацией в файле /etc/resolv.conf , устраните эти проблемы.

Ошибки подключения

Ошибка подключения возникает, когда обработчик сообщений Apigee Edge пытается подключиться к бэкэнд-серверу, и при этом возникает одна из следующих проблем:

  • Обработчик сообщений не может установить соединение в течение заданного времени ожидания (по умолчанию: 3 секунды).
  • Серверная часть отклоняет соединение.

Диагноз

  1. Определите идентификатор сообщения, в котором запрос завершился с ошибкой.
  2. Найдите идентификатор конкретного сообщения запроса в журнале обработчика сообщений ( /opt/apigee/var/log/edge-message-processor/logs/system.log ). Вы можете увидеть следующие ошибки:
    1. Ошибка onConnectTimeout указывает на то, что обработчик сообщений не смог подключиться к серверной части в течение заданного периода ожидания соединения.
      2016-06-23 09:11:49,314 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onTimeout() : ClientChannel[C:]@10 useCount=1 bytesRead=0 bytesWritten=0 age=3001ms lastIO=3001ms .onConnectTimeout connectAddress=www.abc.com/11.11.11.11:80 resolvedAddress=www.abc.com/11.11.11.11
      2016-06-23 09:11:49,333 org:myorg env:prod api:Employees rev:1 messageid:mo-96cf6757a-9401-21-1 NIOThread@2 ERROR ADAPTORS.HTTP.FLOW - RequestWriteListener.onTimeout() : RequestWriteListener.onTimeout(HTTPRequest@6b393600)
    2. Ошибка java.net.ConnectException: Connection refused указывает на то, что соединение было отклонено серверной частью.
      14:40:16.531 +0530
      2016-06-17 09:10:16,531 org:myorg env:prod api:www.abc.com rev:1 rrt07eadn-22739-40983870-15 NIOThread@2 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() : connect to www.abc.com:11.11.11.11:443 failed with exception {}
      java.net.ConnectException: Connection refused
      at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.7.0_75]
      at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:739) ~[na:1.7.0_75]
      at com.apigee.nio.ClientChannel.finishConnect(ClientChannel.java:121) ~[nio-1.0.0.jar:na]
      at com.apigee.nio.handlers.NIOThread.run(NIOThread.java:108) ~[nio-1.0.0.jar:na]
  3. Проверьте, можете ли вы подключиться к конкретному серверу бэкэнда напрямую из каждого из обработчиков сообщений, используя команду telnet :
    1. Если серверная часть выдает один IP-адрес, используйте следующую команду:
      telnet BackendServer-IPaddress 443
                
    2. Если серверная часть выдает несколько IP-адресов, используйте имя хоста серверной части в команде telnet , как показано ниже:
      telnet BackendServer-HostName 443
                
  4. Если вам удаётся подключиться к бэкэнд-серверу, вы можете увидеть сообщение типа « Connected to backend-server . Если же подключение к бэкэнд-серверу не удаётся, это может быть связано с тем, что IP-адреса обработчиков сообщений не внесены в список разрешенных адресов на данном бэкэнд-сервере.

Разрешение

Предоставьте доступ к IP-адресам обработчиков сообщений на конкретном бэкэнд-сервере, чтобы разрешить трафик от пограничных обработчиков сообщений к вашему бэкэнд-серверу. Например, в Linux вы можете использовать iptables для разрешения трафика с IP-адресов обработчиков сообщений на бэкэнд-сервере.

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

Неверное имя хоста целевого сервера.

Диагноз

Если имя хоста, указанное на целевом сервере, неверно, вы можете получить ответ 503 Service Unavailable с кодом ошибки messaging.adaptors.http.flow.ServiceUnavailable.

инструмент трассировки

Для диагностики с помощью инструмента Trace:

  1. Если проблема сохраняется, включите сеанс трассировки для затронутого API.
  2. Выполните вызов API и воспроизведите проблему — ошибка 503 Service Unavailable с кодом ошибки messaging.adaptors.http.flow.ServiceUnavailable.
  3. Выберите один из запросов, завершившихся неудачей.
  4. Проследите за различными этапами трассировки и определите место возникновения сбоя.
  5. Выберите объект FlowInfo , в котором обнаружена ошибка. Дополнительную информацию можно найти в поле error.cause , которое укажет на причину сбоя, как показано в следующем примере:

    Пример запроса, демонстрирующий ошибку error.cause в трассировке.

    Sample request showing error.cause in the trace
  6. Если в файле error.cause отображается сообщение "Хост недоступен", то вероятной причиной ошибки является одна из следующих:
    • Имя хоста, указанное в конфигурации целевого сервера/целевой конечной точки, некорректно или содержит лишние пробелы или специальные символы.

      Например, в имени хоста присутствует лишний пробел, как показано ниже:
      "demo-target.apigee.net "
                        
    • Имя хоста, перезаписанное переменной target.url в API-прокси с помощью политики AssignMessage или JavaScript , некорректно, содержит пробел или другие нежелательные специальные символы.
  7. Проверьте конфигурацию целевой конечной точки и/или определение целевого сервера, чтобы убедиться, что имя хоста целевого сервера не указано неверно и не содержит лишних пробелов или специальных символов.
  8. Если целевой сервер создается динамически, проверьте соответствующую политику (например, политику AssignMessage/JavaScript ), использованную для его создания. Убедитесь, что имя целевого сервера не содержит ошибок, пробелов или специальных символов.
  9. После определения имени хоста целевого сервера выполните команду nslookup/dig для этого имени хоста, чтобы проверить, можно ли его разрешить.

    Например, выполнение команды nslookup для имени хоста, содержащего лишний пробел, выдает следующий результат:

    nslookup "demo-target.apigee.net "
    Server:	49.205.75.2
    Address:	49.205.75.2#53
    
    ** server can't find demo-target.apigee.net\032: NXDOMAIN
  10. Если команда операционной системы nslookup также не может разрешить имя хоста, то причиной этой проблемы является неправильное имя хоста, используемое для целевого сервера.

    Перейдите в раздел «Решение» .

Журналы обработки сообщений

Для диагностики с использованием журналов обработки сообщений:

  1. Определите идентификатор сообщения запроса, завершившегося с ошибкой .
  2. Найдите идентификатор сообщения в журнале обработчика сообщений. ( /opt/apigee/var/log/edge-message-processor/logs/system.log )
  3. Если вы видите следующие предупреждающие/ошибочные сообщения, это означает, что обработчик сообщений не смог определить имя хоста. Поскольку сообщение будет отложено, вы можете не увидеть это предупреждение для всех идентификаторов сообщений/запросов.
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 WARN S.HTTPCLIENTSERVICE - DNSCache$2.failed() : Failed to resolve hostname www.somehost.com . Reason mocktarget.apigee.net : Name or service not known. This log message will snooze for 2 hours
        
  4. Затем последует предупреждающее сообщение, в котором обработчик сообщений удалит адрес из кэша DNS, поскольку целевой сервер недоступен.
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid> NIOThread@0 WARN  c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.addressNotReachable() : The last address has been removed from Address list null refreshing
        
  5. В этом случае вы можете увидеть сообщение о сбое обработчика сообщений с исключением «Хост недоступен». Иногда в сообщении об ошибке отображается имя хоста:
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to demo-target.apigee.net  failed with exception {}
    java.lang.RuntimeException: Host not reachable
    	at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704)
    	at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675)
    	at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234)
    	<snipped>
        
  6. Иногда может отображаться значение null , поскольку имя хоста не может быть разрешено или недоступно, как показано ниже:
    org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to null failed with exception {}
    java.lang.RuntimeException: Host not reachable
    	at com.apigee.protocol.http.HTTPClient$Context.initConnect(HTTPClient.java:704)
    	at com.apigee.protocol.http.HTTPClient$Context.send(HTTPClient.java:675)
    	at com.apigee.messaging.adaptors.http.flow.data.TargetRequestSender.sendRequest(TargetRequestSender.java:234)
    	<snipped>
        
  7. Ошибка Host not reachable обычно возникает в одном из следующих случаев:
    • Имя хоста, указанное в конфигурации целевого сервера/целевой конечной точки, некорректно или содержит лишние пробелы или специальные символы.

      Например, в следующем сообщении об ошибке в имени хоста "demo-target.apigee.net" обнаружен нежелательный пробел:
      NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to demo-target.apigee.net  failed with exception
              
    • Имя хоста, перезаписанное переменной target.url в API-прокси с помощью политики AssignMessage или JavaScript , некорректно, содержит пробел или другие нежелательные специальные символы.
  8. Определите имя хоста целевого сервера, с которым обработчик сообщений пытается установить связь, используя один из следующих способов:
    1. Внимательно изучите сообщение об ошибке, содержащее Host not reachable .
    2. Если в сообщении об ошибке отображается имя хоста, скопируйте его, включая пробелы и специальные символы.
    3. Если в сообщении об ошибке для имени хоста указано значение null, как показано в следующем сообщении об ошибке,
      org:myorg env:prod api:TestTargetServer rev:2 messageid:<messageid>  NIOThread@0 ERROR HTTP.CLIENT - HTTPClient$Context.onConnectFailure() :  connect to null failed with exception {}
              
      1. Определите имя хоста, проверив определение целевого сервера, используемое в неисправном API-прокси.
      2. Если целевой сервер создается динамически, проверьте соответствующую политику (например, политику AssignMessage/JavaScript ), использованную для его создания.
  9. После определения имени хоста целевого сервера выполните команду nslookup/dig для этого имени хоста и проверьте, можно ли его разрешить.

    Например, выполните команду nslookup для имени хоста, содержащего пробел.

    nslookup "demo-target.apigee.net "
    Server:	49.205.75.2
    Address:	49.205.75.2#53
    
    ** server can't find demo-target.apigee.net\032: NXDOMAIN
          
  10. Если команда операционной системы nslookup также не может разрешить имя хоста, то причиной этой проблемы является неправильное имя хоста, используемое для целевого сервера.

Разрешение

  1. Убедитесь, что имя хоста целевого сервера, указанное в конфигурации целевой конечной точки или в определении целевого сервера , является правильным и не содержит лишних пробелов или специальных символов.
  2. Если вы используете политику AssignMessage/JavaScript для динамической генерации имени хоста целевого сервера, изучите определение политики и код и убедитесь, что имя хоста целевого сервера генерируется корректно.

Сбои при установлении SSL-соединения

Целый сборник инструкций по устранению неполадок посвящен ошибкам установления соединения TLS/SSL. См. раздел «Ошибки установления соединения SSL» .

Определение источника проблемы

Определенные типы ошибок могут возникать как на входящем (северном), так и на исходящем (южном) соединении. Ошибка на входящем (северном) соединении возникает между клиентским приложением и Edge. Ошибка на исходящем (южном) соединении возникает между Edge и целевым сервером. Для диагностики подобных проблем в первую очередь необходимо определить, на каком из соединений возникает ошибка — на северном или южном.

Понимание маршрутов в северном и южном направлениях

В Edge вы можете столкнуться с ошибкой 503 Service Unavailable как при входящем, так и при исходящем соединении:

  • Входящее (или северное) соединение — это соединение между клиентским приложением и пограничным маршрутизатором. Маршрутизатор — это компонент Apigee Edge, который обрабатывает входящие запросы к системе.
  • Исходящее (или южное) соединение — это соединение между обработчиком сообщений Edge и бэкэнд-сервером. Обработчик сообщений является компонентом Apigee Edge, который перенаправляет API-запросы на целевые бэкэнд-серверы.

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

На следующем рисунке показаны варианты пересадок в направлении севера и юга для района Апигее-Эдж.

Flow of client application (northbound connection) through Edge to backend server (southbound connection)

Определение места возникновения ошибки 503 «Сервис недоступен»

Для определения того, произошла ли ошибка 503 Service Unavailable на северном или южном направлении, воспользуйтесь одной из следующих процедур.

трассировка пользовательского интерфейса

Чтобы определить место возникновения ошибки с помощью трассировки пользовательского интерфейса:

  1. Если проблема сохраняется, включите трассировку пользовательского интерфейса для затронутого API.
  2. Если трассировка пользовательского интерфейса для неудачного запроса API показывает, что ошибка 503 Service Unavailable возникает во время выполнения целевого запроса или отправляется бэкэнд-сервером, то проблема находится на нисходящем участке (то есть между обработчиком сообщений и бэкэнд-сервером).
  3. Если вы не получаете трассировку для конкретного вызова API, значит, проблема находится на уровне вышестоящего узла , между клиентским приложением и маршрутизатором.

мониторинг API

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

Рассмотрим пример сценария , демонстрирующий, как устранять проблемы 5xx в ваших API с помощью мониторинга API. Например, вы можете настроить оповещение, которое будет отправляться, когда количество ошибок messaging.adaptors.http.flow.ServiceUnavailable превысит определенный порог.

Журналы доступа NGINX

Чтобы определить место возникновения ошибки с помощью трассировки пользовательского интерфейса:

Если проблема возникала ранее или носит периодический характер, и вам не удаётся получить трассировку, выполните следующие действия:

  1. Проверьте журналы доступа NGINX ( /opt/apigee/var/log/edge-router/nginx/ org - env . port _access_log ).
  2. Проверьте наличие ошибок 503 для конкретного API-прокси.
  3. Если вы можете обнаружить какие-либо ошибки 503 для конкретного API в конкретное время, то проблема возникла на стороне соединения (между обработчиком сообщений и бэкэнд-сервером).
  4. В противном случае, проблема возникла на стороне соединения, идущего в северном направлении (между клиентским приложением и маршрутизатором).