在我们的IIS日志中,为什么requestTimeout为110秒时请求持续5分钟或更长时间?

时间:2016-05-09 12:34:26

标签: asp.net asp.net-mvc performance iis iis-7.5

我们在服务器性能方面遇到了一些问题,在分析我们的IIS请求日志时,我们看到很多请求需要几个分钟才能完成。

当ASP.NET executionTimeout设置元素中httpRuntime的默认值 110秒时,这怎么可能?来自docs关于executionTimeout [强调我的]:

  

指定在ASP.NET自动关闭之前允许执行请求的最大秒数。

这正是我们希望看到的行为,但是在日志条目下面让我们相信某些内容是错误的,并且这些请求在配置(或默认)超时后不会终止:

slowest requests

我还检查了我们的代码库是否有HttpContext.Server.ScriptTimeout的调用,但是在极少数情况下只执行了两次,并且最多分配了600(秒)。

1 个答案:

答案 0 :(得分:1)

如果不了解您的应用和环境,很难说。但是,这个链接可能有助于解释为什么它可能高于预期。

Description of the time-taken field in IIS 6.0 and IIS 7.0 HTTP logging

具体做法是:

  

从IIS 6.0开始,时间字段通常包括网络时间。在HTTP.sys在time-taken字段中记录值之前,HTTP.sys通常等待客户端确认最后一个响应数据包发送操作或HTTP.sys等待客户端重置底层TCP连接。因此,当通过慢速网络连接向客户端发送大响应或大响应时,时间字段的值可能会超出预期值。

     

注意如果满足下列条件之一,则time-taken字段中的值不包括网络时间:

     
      
  • 响应大小小于或等于2 KB,响应大小来自内存。
  •   
  • 使用TCP缓冲。使用HTTPAPI.dll的应用程序可以设置HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA标志以启用TCP缓冲   Windows Server 2003 Service Pack 1和更高版本。这允许服务器   将所有响应数据发送到客户端而无需等待   对于客户的相应确认。
  •   

希望有所帮助。