不确定 Azure 是否有特定的限制,但 .NET 框架对一次可以处于活动状态的同一地址的传出连接数有限制。在这篇名为“提高 Web 服务性能”的 MSDN 文章中,它提到默认值为 2。
配置 maxconnection 属性
Machine.config 中的 maxconnection 属性限制并发出站呼叫的数量。
注意 此设置不适用于本地请求(来自与 Web 服务位于同一服务器上的 ASP.NET 应用程序的请求)。该设置适用于来自当前计算机的出站连接,例如,ASP.NET 应用程序和调用其他远程 Web 服务的 Web 服务。maxconnection 的默认设置是每个连接组两个。对于调用 Web 服务的桌面应用程序,两个连接可能就足够了。对于调用 Web 服务的 ASP.NET 应用程序,两个通常是不够的。将 maxconnection 属性从默认的 2 更改为(CPU 数量的 12 倍)作为起点。
<connectionManagement>
<add address="*" maxconnection="12"/>
</connectionManagement>
请注意,每个 CPU 12 个连接是一个任意数字,但经验证据表明,当您还将 ASP.NET 限制为 12 个并发请求时(参见本章后面的“线程”部分),它对于各种场景都是最佳的。但是,您应该根据您的情况验证适当的连接数。
这些限制是为了防止单个用户独占远程服务器上的所有资源(DOS 攻击)。由于这是在 Azure 中运行的一项服务,我猜想他们在终端上进行了节流,以防止用户使用来自单个 IP 的所有传入连接。
我的下一步是检查并查看 azure web 角色是否存在并发连接限制(此线程建议存在并且它是可配置的)并增加它。否则,我会尝试从多个来源执行负载测试,看看您是否仍然遇到相同的限制。