我在Windows服务中托管了WCF Web服务。
使用以下属性(VB)配置服务
<ServiceBehavior(ConcurrencyMode:=ConcurrencyMode.Multiple,
InstanceContextMode:=InstanceContextMode.PerCall,
UseSynchronizationContext:=False)>
我创建了一个测试客户端,它一次创建了50个线程,我立即启动它们,都在WCF服务上查询操作。前30个左右的开口(client.open())工作,但之后我在客户端收到一条错误消息,因为尝试打开服务时出现超时,因此无法完成打开,因此我收到EndPointNotFoundException 。 (如果重要的话,我打电话的操作都是同步的。)
我可以期待这种行为,因此只需要忍受这些异常,或者我必须查看我的一些设置,无论是上述设置还是其他任何设置? (我正在使用NetTcpBinding。)
我看到的是客户端同时处理同时创建的线程的请求,因此上述设置具有使服务多用户同时启用的所需效果。
但理想情况下我不会得到超时异常。相反,我希望客户等待更长时间才能获得他们的回复,而不是超时。
有什么想法吗?
全部谢谢!
答案 0 :(得分:1)
检查以下设置:
<behavior name="CommonServices_Behavior">
<serviceThrottling maxConcurrentCalls="100" maxConcurrentSessions="50"
maxConcurrentInstances="50" />
</behavior>
我似乎记得其中一些值在machine.config文件中设置了默认值。还有MaxConnections value to check for NetTcpBinding。