使用 IIS 8 提供静态文件的速度很慢

使用 IIS 8 提供静态文件的速度很慢

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

我们在 IIS 8 的网站上设置了失败请求跟踪,并制定了一条规则来记录任何耗时超过 2 秒的请求。我们每分钟大约会生成一个日志文件,但我无法识别其中的规律 — 例如,它并不总是相同的静态文件。

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

我不明白为什么绩效视图只显示每项 0ms。同样,在紧凑视图所有时间都完全相同。这意味着无法看到请求的哪一部分导致速度变慢。我的假设是,绩效视图相当于所用的时间数字。我是否不明白为什么事实并非如此?

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

屏幕截图 1 屏幕截图 2

答案1

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

看看你是否可以在 IIS 的“当前请求”视图中捕获其中一个,MSDN 文档或者查看 IIS 日志,获取一堆缓慢的请求,然后谁是多个 IP。它们很可能来自移动提供商。

答案2

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

相关内容