我有一个WCF服务部署在控制台应用程序与BasicHTTPBinding和安全套接字层启用。还设置了以下属性:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
我还将节流行为设置为
<serviceThrottling maxConcurrentCalls="2147483647" maxConcurrentSessions="2147483647"
maxConcurrentInstances="2147483647" />
另一方面,我创建了一个测试客户端(用于负载测试),它同时启动多个客户端(多线程),并在服务器上执行事务。一切似乎都很好,但是在服务器上,CPU利用率并没有增加,所以我添加了一些日志记录来查看对服务器的并发调用的数量,发现它从未超过6。
我已经检查了两次以上的性能计数器日志记录代码,对我来说似乎没问题。
所以我想问在这种情况下问题出在哪里?我还没有指定任何类型的ContextMode或ConcurrencyMode。
在这篇文章之后,我注意到每当我启动另一个测试客户端时,我的并发服务器调用计数增加到2,比如如果我只运行一个实例,最大并发Rcvd调用将是2,如果有两个实例,相同的值会变成4,依此类推。从一次进程调用WCF的次数是否有限制?
*增加于3月17日*
今天,我在运行服务器的同一台机器上用一个测试客户机(有50个并发用户)运行了另一个测试。这一次,我得到了我想要显示的确切结果(即最大并发调用数Rcvd by Server = 50)。
但我也需要在其他机器上做同样的事情。有人能帮我解决这个问题吗?
发布于 2010-03-19 13:31:02
我找到了一个解决方案: ServicePointManager上的连接限制导致了这个问题。要删除此限制,您只需设置
System.Net.ServicePointManager.DefaultConnectionLimit = X;
其中,默认限制为2。
发布于 2011-08-19 15:59:41
或者在客户端中使用此配置。
<system.net>
<connectionManagement>
<add maxconnection = "200" address ="*" />
</connectionManagement>
</system.net>
这里200是来自客户端的限制
https://stackoverflow.com/questions/2454362
复制相似问题