题
我已经部署在basicHttpBinding的和SSL控制台应用程序启用了WCF服务。以下属性设置,以及:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
我还设置节流行为
<serviceThrottling maxConcurrentCalls="2147483647" maxConcurrentSessions="2147483647"
maxConcurrentInstances="2147483647" />
在其同时启动多个客户端(多个线程)并在服务器上执行交易我已经创建了一个测试客户端(用于负载测试)另一方面。一切似乎都不错,但在服务器上的CPU利用率不增加,所以我加了一些日志,查看并发呼叫服务器的数量,发现它从来没有超过6。
我已经查阅了性能计数器日志代码的两倍多,似乎没什么问题。
所以我要问哪里是在这种情况下,什么问题?我还没有指定任何种类ContextMode或ConcurrencyMode的爱好。
这帖子以后,我注意到,每当我开始测试客户端的另一个Intance我的并发服务器调用计数器增加至2一样,如果我运行仅1个实例的最大并发RCVD呼叫将被2,如果有两个实例相同的值进入4等。有WCF数的任何限制从曾经进程调用?
********添加于17三月********
今天我跑在其上运行服务器的同一台机器上的一个测试客户端(50个并发用户)的另一测试。这一次,我得到确切的结果是什么,我想它显示(按服务器= 50 RCVD即最大并发调用)。
不过,我需要做的是同样的他人的机器也是如此。任何人可以帮助我在这?
解决方案 2
我发现了一个解决方案:有上ServicePointManager连接限制这是引起此问题。为了解除这个限制,你只需要设置
System.Net.ServicePointManager.DefaultConnectionLimit = X;
,其中默认限制为2。
其他提示
或者在客户端使用此配置。
<system.net>
<connectionManagement>
<add maxconnection = "200" address ="*" />
</connectionManagement>
</system.net>
下面200是来自客户端的极限
不隶属于 StackOverflow