Ser*_*pov 7 .net iis wcf iis-7 iis-7.5
在我当前的项目中,我们(我的意思是"项目团队")使用IIS上托管的WCF服务.
以下是一些可能很重要的技术细节:
所以,问题是 - 有时WCF服务变得不可用.当我们尝试访问这些WCF服务时,我们会收到超时错误.恢复WCF服务功能的唯一方法是重新启动NetTcpActivator(Net.Tcp监听器适配器)Windows服务.
根据我的同事的理论,这个错误可能与这篇知识库文章中描述的问题有关:
FIX:当您运行基于.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).不幸的是,他们没有得到答案.一些配置更改后问题就消失了!现在它又回到了新的服务器上.
我将非常感谢你的所有想法和想法!
好吧,经过大量研究,我找到了问题的原因。可能还有其他情况会发生这种情况,但希望这会对某些人有所帮助。微软正在他们的实验室中进行复制,最终应该会得到修复。
在我们的例子中,所有行星都必须对齐。我们有一个用于客户端和服务器的 .NET 4 集成应用程序池(在开发人员计算机上)。该服务使用外部配置文件进行绑定 ( <bindings configSource="serviceModel.bindings.config" />
),该文件从另一个项目链接并在构建时复制,并将自定义构建任务添加到服务的 .csproj 中。
要重现该问题:
我还不知道 w3wp 或 SMSvcHost 是否是罪魁祸首。第 3 步很关键,尽管我还无法解释原因。如果您不删除该文件,那么一切都很好。如果您修改文件(创建日期保持不变),一切都很好。如果您将配置 XML 移至主 Web.config 文件中,则一切正常。当构建任务复制文件时,创建日期会更新,所以我猜测它以某种方式缓存,并且其中一个进程检测到日期更改。
如果您重新启动 SMSvcHost 服务(完全停止、完全启动)一次或两次,客户端请求将通过,从那时起您就没事了。
所以我现在的猜测是,这可能是部署后的一个问题,但如果您确保一切都在运行(并根据需要重新启动服务),那么您应该没问题。您也可以不执行外部/链接文件。
一旦微软追踪到这个问题,我希望能有更多的见解。
最终更新 我忘记早些时候回到这个问题了。微软基本上承认他们可能有一个错误,但由于有解决方法,并且在票证上花费了足够的时间,因此他们将其关闭,不再进一步研究。当 SMSvcHost 使用以下设置启动时,似乎存在某种类型的竞争条件(类似于我之前发布的内容):
configSource
链接外部配置与此无关。解决方法是不使用configSource
我们现在正在做的事情。
归档时间: |
|
查看次数: |
27273 次 |
最近记录: |