【问题标题】:Why does WCF limit concurrent connections to 5?为什么 WCF 将并发连接数限制为 5?
【发布时间】:2009-03-26 16:18:09
【问题描述】:

我在 Vista 的 II7 中托管了一个 WCF 服务 (basicHttpBinding),我希望它可以同时处理许多请求。我正在尝试通过在测试应用程序中生成 200 个线程并调用 WCF 服务来加载测试服务。我已经在服务器所在的同一台机器以及多台其他计算机上运行了这个测试应用程序,我总是得到相同的结果——使用的工作人员不超过 5 个。这是 WCF、HTTP 还是 IIS 瓶颈?

【问题讨论】:

    标签: wcf http iis concurrency


    【解决方案1】:

    这是一项防止拒绝服务攻击的功能。 WCF 开箱即用,旨在确保安全。 检查服务行为,在 msdn 中查找 maxConcurrentCalls 和 maxConcurrentSessions 配置。我认为限制是 10,但我可能错了。

    【讨论】:

    • 这是最接近的答案 - 如果我更改了 maxConcurrentCalls,WCF 工作人员的数量会在一定程度上反映该值。任何超过 10 的东西实际上并没有运行更多的工人。奇怪的是,默认值为 16,但我无法同时激活 16 个调用。
    • 默认限制是 16 而不是 10。顺便说一句 0x10 是 16 :)
    • MS 表示 .NET 3.5 中会话的默认值为 10,4.0+ 中为 100xprocessor。 msdn.microsoft.com/en-us/library/…
    【解决方案2】:

    不,这只是 WCF 中的默认限制设置。它在服务配置文件中的行为的 serviceThrottling 元素中配置,该文件具有 maxConcurrentSessions 属性。默认为 5,但您可以将其设置为您想要的任何值。

    【讨论】:

      【解决方案3】:

      WCF 默认是安全的。这意味着默认设置限制了您可以对 WCF 服务执行的操作,以避免诸如拒绝服务攻击之类的事情。这对于面向 Internet 的 Web 服务来说非常有用,但它有时会咬你一口。根据您使用的绑定和行为,它可能是其中任何一个中的设置。

      Here 是这些设置的概述 - 您需要进行一些实验才能确定究竟是什么在咬你。

      【讨论】:

        【解决方案4】:

        从 .NET 4.5 开始,默认连接数为(100 * 处理器数)-ServiceThrottlingBehavior.MaxConcurrentSessions Property

        【讨论】:

          猜你喜欢
          • 2014-10-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-11
          • 2011-06-25
          • 1970-01-01
          • 2014-01-31
          • 2010-10-01
          • 2012-09-20
          相关资源
          最近更新 更多