WCF服务节流

问题描述:

我有部署在basicHttpBinding的和SSL控制台应用程序的WCF服务启用。以下属性设置,以及: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即最大并发调用)。

但我需要做的是同样的他人的机器也是如此。有人可以帮助我吗?

我发现了一个解决方案:在ServicePointManager上存在导致此问题的连接限制。为了解除这个限制,你只需要设置

System.Net.ServicePointManager.DefaultConnectionLimit = X; 

在默认限制为2

+4

从@JuliaS极限:哪里此行去了?这是客户端还是WCF服务设置? – 2011-11-29 08:25:38

+1

对于迟到的回复感到抱歉:这适用于任何.net应用程序,它可以对任何服务器进行多个并发出站连接。 – 2012-10-10 03:12:01

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

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

这里200是从客户端

+0

它在这里描述http://www.codeproject.com/KB/aspnet/10ASPNetPerformance.aspx,也许你需要知道这个http://support.microsoft.com/kb/969189 – 2011-11-30 17:50:26

+0

MSDN:[ Element (网络设置)](https://msdn.microsoft.com/en-us/library/fb6y0fyc.aspx) – 2016-08-15 20:12:16

+0

我增加了maxconnection =“100”address =“*”但没有运气获得WCF超时错误 – 2016-10-13 08:35:13