在system.net?

时间:2015-07-22 13:36:38

标签: c# asp.net http throttling

我们的系统遇到了WCF连接受限的问题,这是由this answer解决的。我们将此设置添加到客户端的web.config中,并且两个并发连接的限制消失了:

           

除了明显的影响(例如服务器超载)之外,将此限制设置为高于默认值“2”的数字(可能更多)是否有任何缺点?有关默认值如此之低的推理的任何来源?

1 个答案:

答案 0 :(得分:1)

一般来说,提高客户端连接限制是可以的,但需要注意几点:

  • 如果您不拥有服务器,请小心,因为您的客户端应用程序可能会与DoS攻击相混淆,这可能导致您的客户端IP地址被服务器阻止。即使您拥有服务器,这有时也会带来风险 - 例如,我们遇到过这样的情况:当用户按住Enter键时,我们应用程序登录页面中的错误会导致发出多个请求。由于我们的防火墙的DoS保护,这导致这些用户被我们的应用程序阻止!
  • 连接不是免费的。它们占用RAM,CPU和其他稀缺资源。有5个或10个客户端连接不是问题,但是当你有数百个开放客户端连接时,你就有可能在客户端上耗尽资源。
  • 客户端和服务器之间的代理或边缘服务器可能会施加自己的限制。因此,您可能尝试打开1,000个并发连接,但只有#5,后来被代理拒绝。
  • 有时,添加更多客户端连接是架构问题的解决方法。请考虑修复体系结构问题。例如,如果您打开这么多连接,因为每个请求需要10分钟才能返回结果,那么您真的应该看一个更松散耦合的解决方案(例如,将请求发送到服务器队列并稍后返回以获取结果)因为长期连接容易受到网络中断,瞬态客户端或服务器中断等的影响。
  • 能够打开多个同时连接可能会导致重新启动客户端或服务器应用程序的风险,因为即使您的“正常”加载只有X个请求/秒,如果客户端或服务器已经脱机了一段时间,那么客户端可以通过一次发出数百或数千个请求来尝试赶上待处理的请求。许多服务器对过载条件具有非线性响应,其中额外10%的负载可能会将响应时间缩短100%,从而产生失控的过载情况。

所有这些风险的解决方案是使用您想要支持的最大连接数小心地对客户端和服务器进行负载测试...并且不要将连接限制设置为高于您测试的连接限制。不要只是因为你可以将连接限制转为1,000,000!

要回答问题的其他部分,2个连接的默认限制可以追溯到HTTP规范的一个非常旧的版本,它将客户端限制为每个域2个连接,这样Web浏览器就不会使用很多服务器。同时连接。有关详细信息,请参阅此答案:https://stackoverflow.com/a/39520881/126352

相关问题