自从我们迁移到 Azure Web 应用程序后,我们注意到对我们的 asp.net mvc 应用程序产生了巨大的性能影响。我们注意到的一件事是,当一个 Action 在几个小时内第一次加载时,请求时间会显着减慢。我们的应用程序使用不多,所以有很多空闲时间。我举几个例子(请注意这些只是后端请求响应时间,不包括dom、js、图像等加载时间):
- 用户仪表板 - 第一个请求大约需要 20 秒。后续加载时间约为 1 秒
- 正在加载一些对象 - 第一个请求大约需要 7 秒。刷新会让你大约 2 秒。在第一次点击该 Action 后,使用相同的 Action 加载其他对象也会更快
我意识到某些加速可能是由于查询缓存,但我想知道是否仅此而已。我使用的是标准计划并且确实启用了“始终在线”,所以我知道这不是问题所在。这似乎是每个 Action 都在发生的。因此,即使用户已经访问了 action1 并且现在是第一次访问 action2,他们仍然会遇到缓慢的情况。
我可以在这里寻找什么来修复?是否有任何特定于 Azure 的设置?
请您参考如下方法:
请按如下所示运行您的查询:
`--你的查询在这里
去
从 sys.dm_exec_session_wait_stats 中选择 * 其中 session_id = @@spid 按 wait_time_ms desc 排序`
最后的 SELECT 语句将向我们提供第一次运行花费如此多时间的原因。
这可能是在较低层上运行的大型查询的 IO 性能不佳。
希望这对您有所帮助。
