我有一个nodejs客户端向azure api管理端点发出请求。有时会出现以下异常:
ClientConnectionFailure: at transfer-response
所以我正在使用请求包,并且在客户端中,我正在执行一个简单的请求:
request({
method: "GET",
headers: {
"contentType": "application/json",
"Ocp-Apim-Subscription-Key": key
},
uri: endpointUrl
}, function (error, response, body) {
(...)
});
那么,是否最终会在客户端,请求中间发生超时,并因此导致与Azure APIM终结点的连接失败? 或者是其他东西?您认为我可以解决这个问题吗?我考虑过增加请求中的超时时间,但是我假设忽略了超时,它假设服务器(Azure Function App)的默认超时为120秒,对吧?
谢谢。
答案 0 :(得分:1)
当后端的响应时间太长时,我们已经看到了这种行为。
我的方法是先查看在这种情况下为Function应用程序的后端,然后查看花费的时间并然后查看是否有任何 timeout limit 设置在APIM。
功能应用程序的超时时间由host.json项目文件中的functionTimeout属性定义。下表以分钟为单位显示了两种计划和两种运行时版本的默认值和最大值:
要解决性能问题,请遵循以下Troubleshoot slow app performance issues in Azure App Service
答案 1 :(得分:1)
ClientConnectionFailure
建议客户端在APIM正在处理请求时中断连接。 at transfer-response
表示这是在APIM向客户端发送响应时发生的。 APIM默认情况下不缓存请求/响应主体,因此,当它向客户端发送响应时,它是同时从后端读取它。如果后端花费很长时间无法响应实际数据,这可能会导致客户端断开连接。
此行为完全由客户端决定停止等待数据驱动。在发送请求之前,请先检查客户端所需的时间,然后查看错误。尝试调整客户端超时。