增加“maxconnection”有什么缺点吗?在system.net中设置
本文关键字:system net 设置 缺点 maxconnection 什么 增加 | 更新日期: 2023-09-27 18:04:06
我们的系统遇到了WCF连接受限的问题,这个答案解决了这个问题。我们将此设置添加到客户端的web中。并且两个并发连接的限制消失了:
除了明显的影响(例如使服务器过载)之外,将此限制设置为比默认的"2"高的数字(可能要高得多)是否有任何缺点?关于违约率这么低的原因有什么来源吗?
通常,可以提高客户端连接限制,但需要注意以下几点:
- 如果你不拥有服务器,那么要小心,因为你的客户端应用程序可能与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