IIS孤立请求

时间:2014-09-09 19:56:35

标签: debugging iis iis-7 asp-classic w3wp

我们有IIS 7运行经典ASP应用程序,我最近注意到以下问题。在一天中,如果我查看服务器节点 - >工人处理一些请求似乎填补了那里。经过的时间是疯狂的,比如一天结束时的12个小时。这请求全部位于ExecuteRequestHandler阶段。

没有任何方法可以执行那么久,我似乎无法重现这个问题。我尝试使用FRT转储w3wp.exe,以及所有好东西,但我有一些一般的问题:

  1. 是否存在控制IIS何时停止请求的设置?具体来说,在开发中,如果我故意将页面设计得很慢(即更新锁定的SQL表)然后关闭浏览器,并监视IIS中的请求,我看到请求仍然在那里大约20被移除前的秒数。这20秒是一个随机的间隔,还是可以在某处设置?要明确的是,这不是页面执行需要20秒,它将永远执行(在此测试用例中)但似乎IIS在我退出后20秒左右放弃它。
  2. 有没有办法看到“孤儿”请求,I.E。应用程序池中没有人在等待的请求
  3. 我还能做些什么来尝试调试这个?转发w3wp表示存在HTTP请求状态为HTR_READING_CLIENT_REQUEST的客户端连接。
  4. 我不断收到修改IIS配置设置的建议,例如AspRequestQueueMax,每次我在ApplicationHost.config中查找这些设置时我都看不到这些设置,所以我要么看错了地方,要么就是默认值不会在配置中显式设置。这引出了两个问题:a)你如何阅读这些配置值,即获取当前值,b)你如何设置它们。

1 个答案:

答案 0 :(得分:0)

经典ASP请求将一直运行,直到达到脚本超时,无论客户端是否已连接。我相信默认值是90秒,但.ASP文件可以通过直接设置Server.ScriptTimeout属性来覆盖它(这很常见)。如果您的请求队列正在填满,那么这可能是原因,更改默认值将无济于事。

如果您可以编辑ASP代码,则可以在可能长时间运行的部分中添加这样的逻辑:

If Not Response.IsClientConnected Then Call Response.End()

您还可以全局搜索Server.ScriptTimeout的代码,以了解滥用的来源。

如果您确实要更改默认脚本超时,请在此处存储: https://www.iis.net/configreference/system.webserver/asp/limits

要通过IIS7 GUI进行更改,请转到:(网站)> (特征视图)> (“IIS”类别)> “ASP”>展开“限制属性”节点> “脚本超时”