【问题标题】:Azure performance issue of .NET MVC 5 website - latency?.NET MVC 5 网站的 Azure 性能问题 - 延迟?
【发布时间】:2015-06-01 19:28:51
【问题描述】:

我们发现 MVC 5 网站的性能存在一些重大问题。当我在单个基本页面上以大约 15-20 个请求/秒的速度对我们的网站 (PAAS) 进行轻量级性能测试时,性能工具(我同时使用 JMeter 和 Visual Studio Enterprise 2015 RC)报告每个请求大约 500 毫秒的响应时间.此外,IIS 日志还报告每个请求大约 500 毫秒。请注意,在这些测试中,我只使用了 1 个 S2 实例。

但奇怪的是,Application Insights 报告说这些请求的响应时间约为 150 毫秒,所以我“丢失”了大约 350 毫秒。这些页面的响应很小,只有 10KB 左右,所以我真的不希望 350ms 用于数据传输等。

我还使用System.Diagnostics.Stopwatch 添加了自定义日志记录,以挂钩到我的请求生命周期的各个阶段。查看this 图表后,我在我的自定义ControllerFactory.CreateController 方法中启动我的秒表并在我的Controller.OnResultExecuted 方法中停止它,我认为这涵盖了完整的请求。秒表的经过时间或多或少与 Application Insights 报告的响应时间相同。我在这里错过了完全相同的 350 毫秒!

一些附加信息: - 我测试的页面是一个没有外部网络服务或数据库的简单页面 - 在整个测试过程中 CPU 使用率保持在较低水平,最高约为 30% - 该网站托管在西欧,据说是阿姆斯特丹。在本地测试时,我预计延迟非常低,因为我住在 40 英里外。 - 我在 Azure 北欧进行了测试,结果相同

我感觉有些东西被限制了,因为 CPU 很低,但响应时间很长。我不太了解 Azure,不知道是什么以及在哪里。我会很感激每一个建议。谢谢!

【问题讨论】:

  • 您可能会在 DNS 查找上浪费时间 - 尝试使用 pingdom 工具,您将能够看到时间的细分 - tools.pingdom.com/fpt(请务必在设置退出
  • 感谢您的回复。同时我已经修好了

标签: asp.net-mvc performance azure asp.net-mvc-5


【解决方案1】:

进一步调试后,似乎在构建某些服务和控制器时,我们会使用WebConfigurationManager 读取应用程序设置。

事实证明,这在 Azure 上。由于您可以在 Azure 管理门户中覆盖硬编码的配置设置,因此每次查找设置都会执行一些内部调用以查看此设置是否被覆盖。

现在,如果您的网站上的流量很少,并且您对每个请求只执行一次此操作,那么这可能不是最大的性能问题,因为每次查找可能需要 15 毫秒。但是,如果您对每个请求执行 7 次此操作(我们有很多用于各种 API、域设置的凭据,所有这些都是可配置的),并且您有 100 个请求/秒,那么,算一算。它会破坏您网站的性能。我们现在将这些设置写入一些 Singleton 设置对象,性能大幅提升。

这也解释了 CPU 低的原因,因为它正在等待一些外部调用完成。 CPU 什么都不做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多