WCF 服务限制

问题描述 投票:0回答:2

我在控制台应用程序中部署了一个 WCF 服务,并启用了 BasicHTTPBinding 和 SSL。还设置了以下属性:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

我还将节流行为设置为

<serviceThrottling maxConcurrentCalls="2147483647" maxConcurrentSessions="2147483647"
        maxConcurrentInstances="2147483647" />

另一方面,我创建了一个测试客户端(用于负载测试),它同时启动多个客户端(多个线程)并在服务器上执行事务。一切看起来都很好,但在服务器上,CPU 利用率没有增加,因此我添加了一些日志记录来查看对服务器的并发调用数量,发现它从未超过 6。

我已经审查了性能计数器日志记录代码两次以上,对我来说似乎很好。

所以我想问一下这种情况问题出在哪里?我还没有指定任何类型的 ContextMode 或 ConcurrencyMode。

在这篇文章之后,我注意到每当我启动另一个测试客户端实例时,我的并发服务器调用计数器就会增加到 2,就像如果我只运行 1 个实例,则最大并发 Rcvd 调用将为 2,如果有两个实例,则相同的值将变为4 等等。一次进程的 WCF 调用次数有限制吗?

更新

今天,我在运行服务器的同一台计算机上使用一个测试客户端(具有 50 个并发用户)运行了另一项测试。这次我得到了我想要显示的确切结果(即服务器接收的最大并发呼叫数 = 50)。

但我也需要在其他机器上做同样的事情。接下来我可以尝试什么?

.net wcf throttling
2个回答
23
投票

或者在客户端使用此配置。

<system.net>
    <connectionManagement>
      <add maxconnection = "200" address ="*" />
    </connectionManagement>
  </system.net>

这里200是客户端的限制


19
投票

我找到了一个解决方案:ServicePointManager 上的连接限制导致了此问题。要删除此限制,您只需设置

System.Net.ServicePointManager.DefaultConnectionLimit = X;

其中默认限制为 2。

© www.soinside.com 2019 - 2024. All rights reserved.