【发布时间】:2014-09-09 19:56:34
【问题描述】:
我们有 IIS 7 运行经典 ASP 应用程序,我最近注意到以下问题。在一天中,如果我查看服务器节点 --> 工作进程,一些请求似乎在那里填满。经过的时间很疯狂,比如一天结束时的 12 小时。这些请求都位于 ExecuteRequestHandler 阶段。
没有办法执行这么长时间,而且我似乎无法重现该问题。我曾尝试转储 w3wp.exe、使用 FRT 以及所有这些好东西,但我有一些一般问题:
- 是否有控制 IIS 何时停止请求的设置?具体来说,在开发过程中,如果我故意设计一个缓慢的页面(即更新一个锁定的 SQL 表)然后关闭浏览器,并监视 IIS 中的请求,我看到该请求仍然存在大约 20被删除前的几秒钟。那 20 秒是随机间隔,还是可以在某个地方设置?需要明确的是,并不是页面需要 20 秒才能执行,它会永远执行(在这个测试用例中),但似乎 IIS 在我注销后 20 秒左右就放弃了。
- 有什么方法可以查看“孤立”请求,I.E.应用程序池中没有人等待的请求
- 我还能做些什么来尝试调试它? w3wp 的转储表明存在 HTTP 请求状态为 HTR_READING_CLIENT_REQUEST 的客户端连接。
- 我不断收到有关修改 IIS 配置设置(例如 AspRequestQueueMax)的建议,每次我尝试在 ApplicationHost.config 中查找这些设置时,我都没有看到这些项目设置,所以要么我看错了地方,要么默认值不会在配置中明确设置。这引出了 2 个问题:a) 你如何读取这些配置值,即获取当前值,b) 你如何设置这些。
【问题讨论】:
-
如果有人偶然发现这一点,#4 的答案是,如果它不在配置中,它依赖于默认值,并且许多设置都在 IIS 本身中。对于 queuemax,您可以在服务器节点 --> asp -->“限制属性”部分进行设置,对于每个处理器的线程也是如此,这是我一直在寻找的另一个设置。
标签: debugging iis iis-7 asp-classic w3wp