为什么我会在Azure中将私有服务连接超时?

我似乎与我的SQL Server和我的MongoDB副本集看到这一点。 我一天只得到一小撮,但仍然牵涉到我。

尝试打开到远程系统的新连接时出现超时。 即使远程系统启动并响应,也会发生这种情况。 我有一个单一的SQL Server实例和一个3系统的mongodb副本集。 在中等到更高的负载下,它似乎是零星发生的。

我正在使用连接池,并且大小应该限制连接(当然每个进程),也不应该看到超过1k连接,只是我看到超时试图连接。

SQL服务器是windows(当然),mongodb实例在Ubuntu下,客户端是linux和windows下的node.js以及.Net 4.5应用程序的组合。

我正在创build一个更有弹性(尝试失败之前尝试3次)的架构,这个问题与我相同。

你在这方面的问题,你会寻找什么?

问题是旧的,这可能是一个不同的根源问题,但是因为我花了一个多星期的时间来追踪它,这可能会节省一些时间在这里:

我有一个问题,提出了类似的错误。 在与蔚蓝技术支持人员一起挖掘最好的猜测(他们不确定 )后,空闲的连接被Web应用程序和服务器之间的代理所杀死。 这发生在约4分钟后。 而且服务器和客户端都不知道它正在发生。 当您尝试在该状态下使用连接时,客户端将永远不会发送到服务器的数据包发送出去。

最后我听说这不会被改变/修复。 所以防止这个选项(按照理智的顺序)是:

  1. 在〜3分钟的时间内杀死服务器上的空闲连接。
  2. 如果客户端在〜3分钟的时间内处于闲置状态,则设置客户端终止连接。
  3. 确保你没有空闲的连接,在客户端做一些忙碌的工作。

如果连接失败,再次尝试,如果它实际上会创build一个新的连接,如果不是,它将只是使应用程序等待更长的时间,才能到达相同的点。

我会在一周内更新,如果这实际上解决了问题的好。

编辑:杀死客户端上的空闲连接和每隔2分钟从服务器发送一个保持活动的组合使这个问题消失。