我正在开发一个OLAP应用程序,WCF + Silverlight客户端(最多100个并发用户)。不幸的是,有时候一个特定的服务电话会变得疯狂(虽然它完全有效,但太复杂了)偶尔(每月一次)会降低整个服务器(通过消耗所有CPU)。
解决方案涉及杀死用户请求甚至整个用户会话,从业务角度来看这对我们来说并不是什么大问题 - 恢复/重新启动整个应用程序。
将用户会话隔离到单独的进程中的想法非常诱人:CPU /内存限制和清理资源处理(不像Thread.Abort) - 如果现代浏览器只针对网页执行此操作,可能是时候在服务器。我们只想评估这个概念,并在我们的特定场景中看到利弊。
因此问题:
答案 0 :(得分:0)
我的WCF服务遇到了同样的问题,他们也为100多个客户提供服务。 我使用IIS日志发现的问题(C:\ Windows \ System32 \ LogFiles \ HTTPERR) 我在IIS设置中的应用程序池回收超时中发现了我的问题。 应用程序池每48小时重新启动一次,这导致已订阅的客户端出现问题。 所以我建议 1.分析http错误日志和IIS日志,如果有任何关闭或回收,将提供有关所有应用程序池状态的更多信息。 2.如果应用程序池崩溃,则为Windbg设置并附加进程设置正确的源文件路径。如果发生任何异常,它会告诉您位置。