使用IIS 8缓慢提供静态文件

我们在Windows Server 2012上托pipe一个ASP.Net MVC Web应用程序,该应用程序通过HTTPS运行。 大多数情况下,一切都很好,而且速度很快,但是我们注意到大约有50个静态文件请求(例如图片,javascript)需要几秒钟才能完成。 一些dynamic页面也需要一段时间才能完成,但有时这是预期的(例如,执行复杂的数据库查询),尽pipe并非总是如此。

我们在IIS 8的网站上设置了失败的请求追踪,并build立了一个规则来logging超过2秒的任何事情。 我们正在获得每分钟生成一个日志文件的信息,而且没有任何可以识别的模式 – 例如它并不总是相同的静态文件。

在下面的例子中,对20kb的PNG图像的请求花了2,215毫秒完成。 我的理解是,这不取决于用户的连接速度 ,这只是服务器处理请求的时间(请纠正我,如果我错了)。

我不明白的是为什么Performance View只显示每个项目0ms。 同样在紧凑型视图中,所有的时间都是完全一样的。 这意味着无法看到请求的哪一部分正在放慢速度。 我的假设是, 性能视图中所有数字的总和将加起来花费时间我错过了为什么这可能不是这样的原因吗?

以防万一,这是一个Amazon EC2实例,图像文件存储在SSD支持的EBS卷上。 服务器上的CPU负载稳定在10-20%。

截图1截图2

我敢打赌这些是来自移动设备的请求,来自FRT的Perf View没有显示任何内容,因为这些请求被卡住在发送字节的IIS上,而不是在FRT中列出的任何模块/事件中。

看看你是否可以在IIS, msdn文档的 “当前请求”视图中捕获其中的一个,或者查看IIS日志,获取一堆缓慢的请求和who.is几个IP。 赔率是来自移动提供商。

这是一个ASP / C#应用程序? 您可以在C:\ Windows \ System32 \ Logfiles \ HTTPERR中检查IIS错误,并在w3c日志中logging时间。