我们在Azure的同一台VM上使用多个RESTful API进行了设置。 这些网站在IIS的Kestrel中运行。 它们受到带有防火墙的Azure应用网关的保护。
我们现在有至少可以运行20分钟的请求。 该请求在Kestrel上不间断地运行全长(在日志中可见),但是发送者恰好在5分钟后会收到“套接字挂起”的消息,或者即使请求在Kestrel中完成也将永远运行。即使发件人的连接中断,请求也会在Kestrel中继续。
我做了什么:
请求已通过邮递员进行了测试,
Azure中某个地方是否隐藏了另一个请求或连接超时?
答案 0 :(得分:0)
我们现在收到的请求将至少运行20分钟。
这是一个可怕的体系结构,应该将其重写为异步的。不要个人考虑,这就是事实。考虑返回带有202 Accepted
标头的Location
,以轮询结果。
您最有可能遇到Azure SNAT层超时—
在公共IP 的配置刀片下对其进行更改。
答案 1 :(得分:0)
所以我前一段时间遇到了这样的事情:
对我们来说,问题可能是超时,如其他答案所示,但解决方案是(而不是增加超时)在我们的postgres数据库前面添加PGbouncer来管理连接并确保在超时之前启动新的连接起火。
不确定您的后端连接是什么样子,但是类似的东西(后端数据库代理)可能会为您提供更多调整连接/重新连接的能力。
对于我们来说,我们正在运行AKS(azure Kubernetes服务),但是所有azure公共ips都遵循相同的规则,从而导致与此问题类似的问题。
虽然这不是一个答案,但我知道也有两种类型的公共IP地址,其中一种被认为是“基本”并且没有相同的可配置性,可能与基本和标准之间的差异有关公共IP /负载平衡器?