增加 ServicePointManager.DefaultConnectionLimit 的缺点

Vir*_*iru 6 .net c# multithreading web-services

我在多线程环境中调用 web 服务。由于操作超时或错误请求,我的很多调用都失败了,但如果我以线性方式执行,则没有任何调用失败,这意味着使用多线程调用 web 服务存在问题。经过大量分析,我发现并发连接的限制导致这些异常,所以我通过添加以下代码来修复它。

 ServicePointManager.DefaultConnectionLimit = 2 * _ThreadCount;
Run Code Online (Sandbox Code Playgroud)

我不知道增加这个限制可能有什么缺点。默认情况下,连接限制为 2。如果有人知道任何缺点,请告诉我。

Rah*_*thi 4

MSDN

更改 DefaultConnectionLimit 属性对现有 ServicePoint 对象没有影响;它仅影响更改后初始化的 ServicePoint 对象。如果未直接或通过配置设置此属性的值,则该值默认为常量 DefaultPersistentConnectionLimit。

笔记

对 DefaultConnectionLimit 属性的任何更改都会影响 HTTP 1.0 和 HTTP 1.1 连接。无法单独更改 HTTP 1.0 和 HTTP 1.1 协议的连接限制。在服务器环境 (ASP.NET) 中使用时,DefaultConnectionLimit 默认为更高的连接数,即 10。