C# 已超过WCF MaxConcurrentSessions
我的公司申请遇到了问题 我将总结系统的关键要素:C# 已超过WCF MaxConcurrentSessions,c#,wcf,session,exception,throttling,C#,Wcf,Session,Exception,Throttling,我的公司申请遇到了问题 我将总结系统的关键要素: 几年来,我公司的系统一直在WindowsXP和7台(家用、Pro、Basic)机器上运行 它是用.NET4.0编写的,基于WCF 它使用默认的限制值(MaxConcurrentSessions=100*CPU(4):足以满足我们的工作负载) 主服务由独立的deamon进程(而不是IIS)托管 主服务配置为多线程/会话实例 该协议是可靠的NET.TCP 不超过10个客户端同时访问该服务 问题是,只有在Windows 7上,我间歇性地(通过WCF完整
Antonio您的所有客户机在使用后是否正确关闭/处理与服务的连接?值得检查的是,“ghost”连接可能解释了这一点。我们在自托管WCF接口中遇到了类似的问题,该接口为异步(2个单向服务调用)后端请求提供了同步请求/响应web服务。在测试的早期,我们注意到,经过一段时间的变化,我们的服务对新请求没有响应。经过一些研究,我们发现每当后端服务(我们无法控制)没有发送响应时,我们都会继续无限期地等待,因此我们保持客户端连接打开 我们通过提供“等待时间”配置值修复了该问题,因此我们确保响应客户端并关闭连接。我们用了如下的方法
Task processTask = Task.Factory.StartNew(() => Process(message));
bool isProcessSuccess = processTask.Wait(shared.ConfigReader.SyncWebServiceWaitTime);
if (!isProcessSuccess)
{
//handle error …
}
以下链接提供有关WCF服务性能计数器的信息,可能有助于进一步确定呼叫是否按预期关闭
希望这有帮助。关于,链接提供的“答案2”可能很有趣……您可能想试试这个。非常感谢cgotberg,但是ServicePoint概念仅适用于HTTP连接,而我使用的是NET.TCP连接。如果将
MaxConcurrentSessions
增加到更高的值,问题是否仍然存在?也许你在某一时刻拥有的并发会话比你想象的要多。是的,它仍然存在,正如我在文中所写的,只有在Windows7上才存在这个问题!答案可能有点短(如何正确关闭/中止…),但我猜这是潜在的问题。