Azure Http连接在5分钟后中断

Azure Http连接在5分钟后中断,azure,Azure,我们在Azure的同一个VM上安装了几个RESTful API。 这些网站在IIS上的Kestrel中运行。 它们受到azure应用程序网关和防火墙的保护 我们现在有至少运行20分钟的请求。 请求在Kestrel上不间断地运行(在日志中可见),但发送方要么在5分钟后得到“套接字挂断”,要么永远运行,即使请求在Kestrel中完成。即使发送方的连接中断,请求仍会在Kestrel中继续 我所做的: 编写了一个小示例应用程序,该应用程序在经过一定数量的 秒排除我们的网站是问题 在VM中运行请求(到本

我们在Azure的同一个VM上安装了几个RESTful API。 这些网站在IIS上的Kestrel中运行。 它们受到azure应用程序网关和防火墙的保护

我们现在有至少运行20分钟的请求。 请求在Kestrel上不间断地运行(在日志中可见),但发送方要么在5分钟后得到“套接字挂断”,要么永远运行,即使请求在Kestrel中完成。即使发送方的连接中断,请求仍会在Kestrel中继续

我所做的:

  • 编写了一个小示例应用程序,该应用程序在经过一定数量的 秒排除我们的网站是问题
  • 在VM中运行请求(到本地主机):没有问题,收到响应
  • 在Azure中从一个VM运行请求到另一个VM:请求永远运行
  • 从Azure外部运行请求:请求在5分钟后终止 带“插座挂断”
  • 检查设置超时:Kestrel:50m,IIS:4000s,ApplicationGateway HttpSettings:3600
请求被邮递员测试过

Azure中是否隐藏了另一个请求或连接超时

我们现在有至少运行20分钟的请求

这是一个可怕的体系结构,应该重写为异步。不要把这当成个人的事,这就是事实。考虑返回一个<代码> 202接受的< /代码>,使用<代码>位置< /代码>标题对结果进行投票。

您很可能遇到了Azure SNAT层超时-


公共IP的配置刀片下更改它

,所以不久前我遇到了类似的情况:

对于我们来说,问题可能是超时,就像另一个答案所建议的那样,但解决方案是(而不是增加超时)在我们的postgres数据库前面添加PGbouncer来管理连接,并确保在超时触发之前启动一个新的连接

不确定您的后端连接是什么样子的,但类似的东西(后端db代理)可以让您更能够调整连接/重新连接

对于我们来说,我们运行的是AKS(azure Kubernetes服务),但所有azure公共IP都遵守相同的规则,导致类似于此的问题


虽然这不是一个答案,但我知道还有两种类型的公共IP地址,其中一种被认为是“基本”的,没有相同的可配置性,可能与基本和标准公共IP/负载平衡器之间的差异有关?

谢谢你的建议。PublicIP上的超时设置为4m是正确的。但这并没有解决问题。这是应用网关公共IP吗?是的,VM PublicID已设置为最大。只有应用网关公共Id具有默认值。已将其设置为最大值,但问题仍然存在。如果您通过VM的公共IP发出请求,则处理相同的问题?除了HTTP超时之外,应用网关还可能有TCP超时,不确定,请在下检查其ARM定义。我们放弃了,正在重构该端点以使其异步。谢谢你的帮助。