我们在 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
这是 asp/c# 应用程序?您可以在 C:\Windows\System32\Logfiles\HTTPERR 中检查 IIS 错误,并在 w3c 日志中检查时间。