Проблема с клиентом, запрашивающим конечную точку управления API Azure - ошибка: ClientConnectionFailure: при передаче-ответе - PullRequest
0 голосов
/ 01 мая 2019

У меня есть клиент nodejs, который отправляет запрос конечной точке управления API-интерфейсом Azure. Иногда я получаю следующее исключение:

ClientConnectionFailure: at transfer-response

Итак, я использую пакет запроса, а в клиенте я делаю простой запрос:

request({ method: "GET", headers: { "contentType": "application/json", "Ocp-Apim-Subscription-Key": key }, uri: endpointUrl }, function (error, response, body) { (...) });

Так происходит ли в конечном итоге тайм-аут на клиенте, в середине запроса, и, следовательно, сбой соединения с конечной точкой APIM Azure? Или что-то другое? И как вы думаете, я мог бы решить эту проблему? Я думал об увеличении времени ожидания в запросе, но я предполагаю, что из-за пропуска времени ожидания предполагается, что время ожидания сервера по умолчанию (Azure Function App) составляет 120 секунд, верно?

Спасибо.

Ответы [ 2 ]

1 голос
/ 03 мая 2019

ClientConnectionFailure предполагает, что клиент разорвал соединение, когда APIM обрабатывал запрос.at transfer-response означает, что это произошло, когда APIM отправлял ответ клиенту.APIM по умолчанию не кэширует тело запроса / ответа, поэтому, отправляя ответ клиенту, он одновременно читает его из бэкэнда.Это может привести к тому, что клиент прервет соединение, если бэкенду потребуется слишком много времени, чтобы ответить фактическими данными.

Такое поведение обусловлено исключительно тем, что клиент решил прекратить ожидание данных.Проверьте, сколько времени у вас на клиенте, прежде чем отправлять запрос, и посмотрите ошибку.Попробуйте настроить время ожидания клиента.

1 голос
/ 03 мая 2019

Мы видели такое поведение, когда серверная часть слишком долго реагировала.

Мой подход заключается в том, чтобы сначала взглянуть на бэкэнд, который в данном случае является приложением Function, и посмотреть, сколько времени занято, и , а затем посмотреть, есть ли какие-либо ограничения timeout * 1007. * установлен на APIM.

Время ожидания приложения-функции определяется свойством functionTimeout в файле проекта host.json . В следующей таблице приведены значения по умолчанию и максимальные значения в минутах для обоих планов и в обеих версиях среды выполнения:

enter image description here

Для устранения неполадок, связанных с производительностью, следуйте инструкциям Устранение проблем с медленной производительностью приложений в службе приложений Azure

...