Azure Http连接在5分钟后中断

问题描述 投票:0回答:2

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

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

我做了什么:

  • 写了一个小例子应用程序,它在一定的秒数后返回,以排除我们的网站成为问题。
  • 在VM中传递请求(到localhost):没有问题,收到响应。
  • 将Azure中的请求从一个VM迁移到另一个VM:请求永远运行。
  • 从Azure外部请求:请求在“socket hang up”5分钟后终止。
  • 检查设置超时:红隼:50米,IIS:4000s,ApplicationGateway-HttpSettings:3600

请求与Postman一起测试,

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

azure
2个回答
0
投票

我们现在有要求至少运行20分钟。

这是一个可怕的架构,应该重写为异步。不要个人接受,它就是这样。考虑返回带有202 Accepted标头的Location来轮询结果。

您最有可能达到Azure SNAT层超时 -

public IP timeout setting

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


0
投票

所以我不久就碰到了这样的事情:

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

不确定你的后端连接是什么样的,但类似的东西(后端数据库代理)可以让你更有能力调整你的连接/重新连接。

对于我们来说,我们运行的是AKS(azure Kubernetes服务),但是所有azure public ips都遵循相同的规则,导致与此类似的问题。

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

© www.soinside.com 2019 - 2024. All rights reserved.