我在启用了BasicHTTPBinding和SSL的控制台应用程序中部署了WCF服务。还设置了以下属性:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
我还将限制行为设置为
<serviceThrottling maxConcurrentCalls="2147483647" maxConcurrentSessions="2147483647"
maxConcurrentInstances="2147483647" />
另一方面,我创建了一个测试客户端(用于负载测试),它同时启动多个客户端(多个线程)并在服务器上执行事务。一切似乎都很好,但在服务器上CPU利用率没有增加所以我添加了一些日志记录来查看服务器的并发调用数,发现它从未超过6。
我已经查看了两次以上的性能计数器日志记录代码,对我来说似乎很好。
所以我想问一下这种情况下的问题在哪里?我还没有指定任何类型的ContextMode或ConcurrencyMode。
在这篇帖子之后,我注意到每当我启动另一个Intance of Test Client时,我的并发服务器调用计数器增加到2,就像我只运行1个实例一样,最大并发Rcvd调用将是2并且如果有两个实例相同的值转到4,依此类推。一次处理的WCF呼叫数量是否有限制?
********于3月17日添加********
今天我在运行服务器的同一台机器上运行了一个测试客户端(有50个并发用户)的另一个测试。这次我得到了我想要显示的确切结果(即服务器的最大并发呼叫数Rcvd = 50)。
但我需要在其他机器上也这样做。有人可以帮我吗?
答案 0 :(得分:22)
或者在客户端中使用此配置。
<system.net>
<connectionManagement>
<add maxconnection = "200" address ="*" />
</connectionManagement>
</system.net>
这里200是客户端的限制
答案 1 :(得分:18)
我找到了一个解决方案:ServicePointManager上存在导致此问题的连接限制。要删除此限制,您只需设置
即可System.Net.ServicePointManager.DefaultConnectionLimit = X;
默认限制为2。