5分钟后Azure Http连接被中断

时间:2018-08-17 07:18:22

标签: azure

我们在Azure的同一台VM上使用多个RESTful API进行了设置。 这些网站在IIS的Kestrel中运行。 它们受到带有防火墙的Azure应用网关的保护。

我们现在有至少可以运行20分钟的请求。 该请求在Kestrel上不间断地运行全长(在日志中可见),但是发送者恰好在5分钟后会收到“套接字挂起”的消息,或者即使请求在Kestrel中完成也将永远运行。即使发件人的连接中断,请求也会在Kestrel中继续。

我做了什么:

  • 编写了一个小示例应用程序,该应用程序在设置了一定数量后返回 秒排除我们的网站是有问题的。
  • 在VM中运行请求(至localhost):没问题,收到响应。
  • 在Azure中将请求从一个VM转移到另一个VM:永久运行该请求。
  • 从Azure外部运行请求:5分钟后请求终止 与“套接字挂断”。
  • 已检查的设置超时:Kestrel:50m,IIS:4000s,ApplicationGateway-HttpSettings:3600

请求已通过邮递员进行了测试,

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

2 个答案:

答案 0 :(得分:0)

  

我们现在收到的请求将至少运行20分钟。

这是一个可怕的体系结构,应该将其重写为异步的。不要个人考虑,这就是事实。考虑返回带有202 Accepted标头的Location,以轮询结果。

您最有可能遇到Azure SNAT层超时—

public IP timeout setting

公共IP 配置刀片下对其进行更改。

答案 1 :(得分:0)

所以我前一段时间遇到了这样的事情:

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

不确定您的后端连接是什么样子,但是类似的东西(后端数据库代理)可能会为您提供更多调整连接/重新连接的能力。

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

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