我有一组非常强大,利用率很低的服务器,它们运行着几台装有Windows Server 2008 R2和IIS 7.5的虚拟机。
问题:有时请求需要很长时间才能处理。 用户看到他们的浏览器在旋转,显然没有得到任何来自IIS的响应。
一些统计信息和尝试解决:
任何想法还有什么我可以看看? 什么会导致请求卡在IIS的“SendResponse”阶段?
你有没有find解决办法? 我很久以前就看到了同样的事情,在JSWeb,PNG和GIF等静态内容被阻塞在“IIS Web Core”模块中的“SendResponse”状态的时候。 我与IIS 7 / ASP.NET 4.0处于相同的情况。 我用这个Microsoft.Web.Administration代码监视这些,而不是appcmd。
更新:在一些进一步的研究,我提出了一个可能性是它可能是一个丢弃的networking连接。 在此线程中 ,该人员在他的IIS日志中报告了1236的Win32状态代码,即“networking连接被本地系统中止”。 我不确定,但是如果这意味着请求者取消了请求,或者Web服务器中止了请求。 可以想象,请求者可能会导航到您的网站上的所有这些HTTP请求页面内容(图像,JS等)已经完成,这可能会中止所有未决的请求到Web服务器(即他点击页面上的链接当它第一次呈现)。 我在我的IIS日志中发现了1236个Win32状态码(主要是用于静态内容,比如GIF,PNG和JS,其中有些与ASPX页面绑定),但是,我不确定这些是否是相同的请求看到卡在“SendResponse”状态。
这通常是由于移动设备在慢速数据连接下载大型资产文件。 当我说“大”我的意思是相对于连接的速度。
这些请求不是“挂起”的,它们只是需要很长时间,因为它们依赖于用户的networking速度。 如果用户断开连接,请求将被丢弃,所以他们可能耐心地等待页面加载。
检查“悬挂”请求旁边列出的IP并查找它们,您可能会发现它们属于移动电话运营商。