我有一个应用程序池,默认情况下每 29 小时回收一次。它在 10 次中顺利回收 9 次,我很确定回收本身对应用程序有好处。每两周一次,回收不起作用。旧的工作进程干净地死掉,新的工作进程启动,但不会提供内容。再次手动回收应用程序池就像一个魅力。失败的工作进程停止并干净地死亡,第二个新的工作进程启动并完美地提供内容。
在回收失败的工作进程之前,我对失败的工作进程进行了崩溃转储,而 DebugDiag 没有发现任何可抱怨的地方。我尝试使用 WinDBG 进行更深入的挖掘,但在新进程启动 15 分钟后 mscorsvr/mscorwks 尚未加载。有 14 个线程正在运行(4 个异步)和 20 个待处理的客户端连接,但 .NET 甚至还没有加载到进程中。
有什么建议可以在哪里戳和刺激以找到根本原因?
嗯。一年多之后,我相信这是一个 ISAPI 过滤器负载问题。如果我没记错的话,一个过程是在应用程序池回收之前启动 ProcMon,然后查看导致 ISAPI 加载失败的原因。