1

我正在开发一个 OLAP 应用程序、WCF + Silverlight 客户端(最多 100 个并发用户)。不幸的是,一个特定的服务调用有时会发疯(尽管它完全有效,只是太复杂了)并且偶尔(每月一次)会导致整个服务器停机(通过消耗所有 CPU)。

解决方案将涉及杀死用户请求甚至整个用户会话,从业务角度来看,这对我们来说没什么大不了的 - 恢复/重新启动整个应用程序是。

将用户会话隔离到单独的进程中的想法非常诱人:CPU/内存节流和干净的资源处理(不像 Thread.Abort)——如果现代浏览器可以仅针对网页执行此操作,那么也许是时候在服务器上执行此操作了。我们只是想评估这个概念并在我们的特定场景中查看利弊。

因此,问题:

  1. 是否已经有一个现有的库/框架可用于管理进程(如预生成/重用进程、限制、超时后终止)?
  2. 是否有任何“最佳实践”或指南来创建这样的架构?
4

1 回答 1

0

我的 WCF 服务也有同样的问题,它们也为 100 多个客户端提供服务。我使用 IIS 日志(C:\Windows\System32\LogFiles\HTTPERR)发现的问题我在 IIS 设置的应用程序池回收超时中发现了我的问题. 应用程序池每 48 小时重新启动一次,这导致已订阅的客户端出现问题。所以我建议 1. 分析 http 错误日志和 IIS 日志,如果有任何应用程序池被关闭或回收,它们将提供有关所有应用程序池状态的更多信息。2. 如果应用程序池崩溃,则为 Windbg 设置并附加进程设置正确的源文件路径。如果发生任何异常,它将告诉您位置。

于 2013-01-19T05:41:31.723 回答