【问题标题】:Disadvantage of increasing ServicePointManager.DefaultConnectionLimit增加 ServicePointManager.DefaultConnectionLimit 的缺点
【发布时间】:2016-01-21 11:33:32
【问题描述】:

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

 ServicePointManager.DefaultConnectionLimit = 2 * _ThreadCount;

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

【问题讨论】:

    标签: c# .net multithreading web-services


    【解决方案1】:

    MSDN 说:

    更改 DefaultConnectionLimit 属性对现有的没有影响 服务点对象;它只影响服务点对象 更改后初始化。如果这个属性的值没有 直接设置或通过配置设置,默认值 到常量 DefaultPersistentConnectionLimit。

    注意

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

    【讨论】:

    • MSDN 还声明默认值为 MaxValue 但是当我调试时我看到默认值为 2
    • @Viru:- 是的,默认设置为 MaxValue。你确定它以前没有改变吗?
    • 没有在我的应用程序或配置中设置此值,但如果我理解正确,它是系统级配置,因此 machine.config 中可能存在我没有检查的配置... .无论如何,我更感兴趣的是找出任何可能的缺点
    • @Viru:- 据我所知,它没有这样的缺点。
    【解决方案2】:

    不,除了您的 AppDomain 会消耗更多资源之外,不应该有任何缺点。但在你的情况下,这是微不足道的。

    事实上,它实际上可以帮助您使用更少的资源(内存),因为挂起的请求在 ServicePoint 内部排队。阅读此处了解更多信息:Big size of ServicePoint object after several hours sending HTTP request in parallel

    让我给你图片....我有大约 46K 任务,这些任务分批运行 100 个(每个任务将调用 webservice),所以我有 100 个线程同时调用 webservice。它仍然微不足道吗?还是会对我的情况产生一些影响?

    当然会有影响。但影响取决于许多因素。每个主机都有一个服务点。

    如果您的任务主要针对同一主机,请将DefaultConnectionLimit 增加到更大的值(当前执行批次中的预期任务数)。

    如果您主要针对不同的主机进行请求,则问题中的限制可以正常工作。

    关于资源的使用,只要你的服务器不是很忙,其他应用程序就可以了。

    【讨论】:

    • 让我给你图片....我有大约 46K 任务,这些任务分批运行 100 个(每个任务将调用 webservice),所以我有 100 个线程同时调用 webserivce。它仍然微不足道吗?还是会对我的情况产生一些影响?
    • 你的意思是在这两种情况下都说同一个主机吗?如果您的任务主要针对不同的主机,请将 DefaultConnectionLimit 增加到更大的值(当前执行批次中的预期任务数)。如果您主要针对不同的主机进行请求,则问题中的限制可以正常工作。
    【解决方案3】:

    您还应该意识到,它可能会在另一端伤害您。 如果您在调用的 Web 服务上施加了很大的负载,您可能会被限制列入黑名单。例如,请参见 blog

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      相关资源
      最近更新 更多