我有一项服务,每秒向连接的客户端发送几个回调。为什么当服务发送消息时客户端会在几秒或更长时间内收到消息?
以下是配置详情:
<bindings>
<wsDualHttpBinding>
<binding name="WSDualHttpBinding_IMyService" receiveTimeout="00:30:00"
sendTimeout="00:30:00" useDefaultWebProxy="false" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None"/>
</binding>
</wsDualHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="Service1Behavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="True"/>
<serviceThrottling maxConcurrentCalls="10"
maxConcurrentInstances="10"
maxConcurrentSessions="5" />
</behavior>
</serviceBehaviors>
</behaviors>
答案 0 :(得分:1)
您描述的内容可能与线程创建时间有关 见这里:WCF service may scale up slowly under load
“根据执行时间和收到的请求数量,您可能会注意到,对于每个收到的请求,WCF执行时间会线性增加大约500ms,直到进程创建了足够的IOCP线程来为请求提供服务或维持传入的负载。”
文章中提供了一种解决方法。
答案 1 :(得分:0)
我正在处理同样的问题,查看这些链接以解决问题。
概述似乎是开箱即用的WCF被“锁定”以防止DoS漏洞。基本上,您需要按照以下链接中的描述取消限制服务。
http://theburningmonk.com/2010/05/wcf-improve-performance-with-greater-concurrency/
http://weblogs.asp.net/sweinstein/archive/2009/01/03/creating-high-performance-wcf-services.aspx