WCF MaxConcurrentSessions已超出

我遇到了公司申请的问题。

我将总结系统的关键要素:

  1. 我公司的系统在Windows XP和7(Home,Pro,Basic)机器上运行了几年。
  2. 它是用.NET 4.0编写的,基于WCF。
  3. 它使用默认限制值(MaxConcurrentSessions = 100 * CPU(4):足以支持我们的工作负载)。
  4. 主要服务由独立的deamon进程(不是IIS)托管。
  5. 主服务配置为Multithraded / PerSession实例。
  6. 该协议是Reliable NET.TCP。
  7. 不超过10个客户端同时访问该服务。

问题是,只有在Windows 7上,间歇性地,由于MaxConcurrentSessions限制(不可能!!!),我得到(我发现WCF完全跟踪日志)“服务器太忙的exception”。

你对这种奇怪的行为有什么看法吗?

谢谢你,祝你新年快乐!

安东尼奥

您的所有客户在使用后是否正确关闭/处置与服务的连接? 值得检查的是,“幽灵”连接可以解释这一点。

我们遇到了与自托管WCF接口类似的问题,该接口为异步(2个单向服务调用)后端请求提供了同步请求/响应Web服务。 在我们测试的早期,我们发现在经过一段时间后,我们的服务对新请求没有反应。 经过一些研究,我们发现每当后端服务(我们无法控制)没有发送响应时,我们会继续无限期地等待,因此我们保持客户端连接打开。

我们通过提供“等待时间”配置值来解决问题,因此我们确保响应客户端并关闭连接。 我们使用了以下类似的东西……

 Task processTask = Task.Factory.StartNew(() => Process(message)); bool isProcessSuccess = processTask.Wait(shared.ConfigReader.SyncWebServiceWaitTime); if (!isProcessSuccess) { //handle error … } 

以下链接提供有关WCF服务性能计数器的信息,可能有助于进一步确定是否按预期关闭了呼叫。 http://blogs.microsoft.co.il/blogs/idof/archive/2011/08/11/wcf-scaling-check-your-counters.aspx

希望这可以帮助。
问候,