【发布时间】:2013-03-03 00:11:29
【问题描述】:
在我当前的项目中,我们(我的意思是“项目团队”)使用托管在 IIS 上的 WCF 服务。
以下是一些可能很重要的技术细节:
- 我们将 NET 3.5 用于 WCF 服务
- 我们使用NET.TCP通信协议
- 我们同时使用 IIS 7 和 IIS 7.5 来托管这些服务
- 我们在每台服务器上使用多个 IIS 工作进程
所以,问题是 - 有时 WCF 服务变得不可用。当我们尝试访问这些 WCF 服务时,我们会收到超时错误。恢复 WCF 服务功能的唯一方法是重新启动 NetTcpActivator (Net.Tcp Listener Adapter) Windows 服务。
根据我同事的理论,这个错误可能与这篇知识库文章中描述的问题有关:
修复:当您运行基于 .NET Framework 4 的 WCF 服务时,WCF 服务的 Smsvchost.exe 停止响应http://support.microsoft.com/kb/2536618
根据这篇文章,如果 SMSvcHost(承载 NetTcpActivator 和端口共享服务的容器服务)在超过 60 秒(不可配置的超时)内无法将请求路由到 w3wp(IIS 工作进程),则会挂起。不幸的是,我们无法找到重现此错误的方法。例如,我们将 SMSvcHost 限制为 1 个 CPU 内核和 1 个线程,并将挂起的连接扩展限制为 1M,并在用户模式下将其推至 100% CPU 负载。它没有挂起!
有时我们的负载测试会导致奇怪的错误,但是当我们停止它们时,所有服务都会自动恢复到正常状态。但有时负载不重可能会挂掉 NetTcpActivator!
另外,我想说这不是一个新问题。我的同事在 3 年前就已经得到它(有关更多信息,请参阅此线程 http://forums.iis.net/t/1167668.aspx/1/10)。而且,不幸的是,他们没有得到答案。一些配置更改后问题就消失了!现在它又回到了新服务器上。
我将非常感谢您的所有想法和想法!
【问题讨论】:
-
我已向 Microsoft 提交了一张关于此问题的票。我能够频繁地复制,尽管不可靠。到目前为止,它似乎与您链接到的问题不同,因为已经解决了该问题并且内存转储不同。希望我们能够解决这个问题,我会在这里发布更新。
标签: .net wcf iis iis-7 iis-7.5