如何解决SocketException中的Azure Function Proxy内部服务器错误500
我有一个Azure函数,该函数使用代理并将其转发到另一个Azure函数作为后端。有一个/ api / ping端点接受GET。当我发送HTTP-GET到ping时,偶尔会收到一个500 Internal Server Error(内部服务器错误),它会在我仅在代理上看到请求但在后端代码执行功能上看不到该请求的地方出错。
我将标有“ true”的标头“ Proxy-Trace-Enabled”添加到标头以跟踪结果。我的结果在我的D:\ home \ LogFiles \ Application \ Proxies \ DetailedTrace文件夹中。在其中,失败请求的日志包含带有以下内容的“后端” json对象
{
"source": "forward-request","timestamp": "2020-08-20T15:42:20.8272145Z","elapsed": "00:00:00.0061051","data": {
"messages": [
"Only one usage of each socket address (protocol/network address/port) is normally permitted Only one usage of each socket address (protocol/network address/port) is normally permitted","Only one usage of each socket address (protocol/network address/port) is normally permitted","Only one usage of each socket address (protocol/network address/port) is normally permitted"
]
}
}
我相信这是DotNet上的Azure Functions 1.0,但是它是很久以前创建的。 为什么我简单的Azure Function代理会给我内部服务器错误,而这些错误没有转发到我的后端代码来执行?
For reference on how to trace the requests
解决方法
Azure功能应用程序服务计划的TCP连接阈值与套接字连接相关。该文档位于blog I'll link here.中 关于使用similar correlation between issues的TCP /端口穷竭问题,存在类似的问题。虽然报告的异常有所不同,但在扩展正在运行的应用程序服务时,错误在我的测试中消失了。
示例: 我有2个Azure函数,FunctionA和FunctionB。 FunctionA是代理,在App Service Plan P1上没有后端执行。 FunctionB是不相关的功能,但在相同的App Service Plan P1上执行。
App Service Plan P1下的FunctionA在调用时出现“内部500服务器错误”问题。在App Insights中报告为“有故障”,并在后端日志中作为套接字异常进行跟踪。
我在App Service Plan P3上重新创建了Azure Function FunctionA。 FunctionA没有收到500个内部服务器错误。但是,它不需要P3付款计划的规模。所以我将其移回了P1。服务器错误再次发生。
FunctionB与FunctionA(P1)在同一App Service计划上。 Azure监视指标每分钟总计4,200 SocketOutboundAll。我将FunctionB从P1移动(删除并重新创建)到P3。我将FunctionA保留在P1上。 SocketOutboundAll的错误已从P1的FunctionA中消除。 P3 App服务计划上的功能也未报告任何异常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。