gpt4 book ai didi

c# - 在 system.net 中增加 "maxconnection"设置有什么缺点吗?

转载 作者:可可西里 更新时间:2023-11-01 16:11:07 24 4
gpt4 key购买 nike

我们的系统存在 WCF 连接受限的问题,已通过 this answer 解决.我们将此设置添加到客户端的 web.config 中,两个并发连接的限制消失了:

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

最佳答案

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

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

所有这些风险的解决方案是使用您希望支持的最大连接数仔细地对客户端和服务器进行负载测试...并且不要将连接限制设置为高于您测试过的限制。不要仅仅因为可以就将连接限制提高到 1,000,000!

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

关于c# - 在 system.net 中增加 "maxconnection"设置有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31564767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com