Azure是否限制传出连接

时间:2015-05-15 21:57:39

标签: azure

我正在Azure中运行一个虚拟机,我有一个服务可以进行大量传出的http客户端调用。一段时间(大约10分钟),当服务进行了大约5000-10000次呼叫时,突然开始将连接拒绝作为对请求的响应。

在本地运行相同的服务(在许多环境和计算机中尝试过)时,它运行时没有任何错误。我们正在使用HttpClient类来处理请求。 请求在同时运行的3个任务中完成。

我应该注意Azure中的传出连接数量是否有限制?

8 个答案:

答案 0 :(得分:3)

每个azure订阅都有一个最大连接限制。

您应该重复使用连接而不是打开新连接。

在此处详细了解:http://www.freekpaans.nl/2015/08/starving-outgoing-connections-on-windows-azure-web-sites/

答案 1 :(得分:3)

我们过去遇到过类似的问题,看起来虚拟机的出站连接限制为1024到外部IP。内部Azure IP位于同一数据中心时,由于内部路由表能够处理这些连接,因此不具备此限制。

这里有很多相关信息: https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-outbound-connections#snatexhaust

总结要点:

  1. 尝试为您的VM分配公共IP,如果它没有。这只有在运行少量VM时才可行。
  2. 如果您在VNET /负载均衡器后面运行,请尝试将多个IP添加到您的VNET /负载均衡器。每个外部IP都会乘以您的连接限制。
  3. 尝试优化您的连接使用,即保持连接存活更长时间,以实现高效的管道衬砌。

答案 2 :(得分:0)

如果您使用的是Linux VM,请执行以下命令检查打开文件/套接字的限制

Ulimit - d cmd will give the value. The default is 1024 

您可以通过在limits.conf文件中附加以下内容来永久更改此值

*soft nofile 65536
*hard nofile 65536

答案 3 :(得分:0)

小心Azure DNS限制。

  

每个VM都会限制DNS查询流量。限制不应该影响大多数应用程序。如果观察到请求限制,请确保已启用客户端缓存。有关更多信息,请参阅DNS客户端配置。

来源:https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances

答案 4 :(得分:0)

我知道它来晚了,但可能对其他人有帮助。
是的,Azure具有每个订阅的出站连接限制。
解决方案:
不要使用多个http client实例,每个应用程序只能使用一个实例。
连接限制的参考链接为Here

示例:
如何使用Here中的单实例示例C#
enter image description here

答案 5 :(得分:-1)

这是Azure page for service limits。它没有为每个时间帧指定一个呼叫,但是将TCP的最大网络连接设置为500K,并且在该表下面有" Web应用程序(网站)限制"你可能会到达。

答案 6 :(得分:-2)

VM或Web角色上存在500K TCP连接的限制(Web角色也位于VM的后台)。您可以参考下面的Azure limits

链接

看起来你的应用程序在发出出站请求方面很重要。在这种情况下,您可能希望将此部分解耦并使用“Azure”功能' Azure Functions为您提供无服务器架构功能。

答案 7 :(得分:-3)

根本不知道Azure,我想知道问题是你的VM是否有TCP套接字数量的限制 - 所有那些处于FIN-WAIT状态的(已关闭)TCP连接可能已经用尽了Azure的一些限制设置在其他情况下不设置。这是纯粹的推测。