调试“卡住”的请求在IIS工作进程中

时间:2015-05-09 07:54:48

标签: asp.net iis iis-6 url-rewrite-module w3wp

对于TL; DR - 我基本上需要指导哪些工具可用于调试发给IIS的请求以及模块内的哪些停顿。

我现在遇到一个旧的ASP 2.0应用程序的问题,它会定期变得不可用并且回收应用程序池(可能是可怕的)并不能100%恢复它。< / p>

首先,它表现为请求进入应用程序池并被困在状态&#39; BeginRequest&#39;在RewriteModule中。

这不是一个始终是第一个遇到此问题的特定请求。这个问题也不容易重建。

最终请求加入此backlog,当它变得超过70+时,应用程序池无法响应来自WAS的ping并强行回收。可以预见的是,它并没有按时停止,旧的应用程序池被迫停止。当新的应用程序池出现时,它可以正常工作,或者它会立即遇到与传出的问题相同的问题,并且请求开始排队。

在这样的问题中,所有官方指导都可以理解为什么RewriteModule可能会窒息。

  • 我已经验证了我的重定向,虽然复杂但语法没有明显的问题(XML验证)。

    • 同样在inetmgr中加载URL Rewrite Module似乎可以很好地解析配置并直观地显示它们。

    • 权限等基本内容都很好。

当应用程序正常工作时,我还使用了失败的请求跟踪/日志来查看请求管道以查找停止的示例URL,我可以确认没有循环逻辑或奇怪的错误呈现 - 请求似乎已被处理正好。这也向我展示了重写模块被调用了多高,从此我真的不知道这个问题是如何与应用相关的,因为此时没有调用.NET。

令人讨厌的是当一个应用程序池遇到这个问题而且我可以抛出那些只是停止失败请求跟踪的请求是不好的,因为你实际上需要一个请求来结束它的旅程而失败否则它会拒绝记录任何事情。

我使用了受影响的w3wp.exe的进程转储并通过DebugDiag运行它们。不幸的是,我唯一看到的是线程是开放的访问重写模块,但很少关于它们被困在哪些。

正如其他人所做的那样,我试图将问题的开始追溯到最近安装的补丁或代码更改,但没有任何匹配。同样,这发生在3x服务器上,否则我会尝试重新安装rewritemodule。调用rewritemodule的同一服务器上的其他站点不受影响。

有没有其他人遇到过这样的问题 - 在这种情况下,网似乎只有相对较少的信息。也许你可以推荐IIS的进一步调试工具或方法,我可以适应这种情况?对于那些习惯使用Apache / Nginx的人来说,这有点急于求助 - 对于长篇文章感到遗憾。

0 个答案:

没有答案