我们有一个新的Win 2012服务器托管一个传统的.NET 3.5 WCF服务(有22个端点,可能有几百个操作),我们遇到了一些性能问题,并希望控制连接数。
我们附加了perfmon Web Service/Current Connections
计数器,并且看到此值反复上升到稳定的24个连接(偶尔会出现峰值到25)。
我们尝试使用system.ServiceModel\behaviors\serviceBehaviors\behavior\serviceThrottling
来管理连接数。我们尝试过默认值,低数字,推荐数字和高数字:
<!-- default -->
<serviceThrottling />
<!-- low -->
<serviceThrottling maxConcurrentCalls="5" maxConcurrentSessions="10" maxConcurrentInstances="15"/>
<!-- recommended (2 processors) -->
<serviceThrottling maxConcurrentCalls="32" maxConcurrentSessions="200" maxConcurrentInstances="232"/>
<!-- high-->
<serviceThrottling maxConcurrentCalls="2000" maxConcurrentSessions="2000" maxConcurrentInstances="2000"/>
更新
我们添加了另一个客户端,并将WS服务器正在处理的请求数量增加了一倍。所以这证明了节流正在上游发生。上游客户端是.NET3.5 ASP.NET网站。与WCF服务的连接是通过wsHttpBinding。
我们已添加system.net\connectionManagement\maxconnection
,但这没有任何影响。
哪些其他设置可能会限制与WCF服务的传出ASP.NET连接?
答案 0 :(得分:0)
请尝试添加此部分并再次测试效果:
<system.net>
<connectionManagement>
<add address="*" maxconnection="250" />
</connectionManagement>
</system.net>
默认值为2。