【问题标题】:how to fix slow loading actions in asp.net mvc on azure web apps如何在 azure web 应用程序上修复 asp.net mvc 中的缓慢加载操作
【发布时间】:2017-07-05 20:00:01
【问题描述】:

我们注意到,自从我们迁移到 azure Web 应用程序后,我们的 asp.net mvc 应用程序的性能受到了巨大影响。我们注意到的一件事是,当一个操作在几个小时内第一次加载时,请求时间会显着减慢。我们的应用程序使用不多,所以有很多空闲时间。我举几个例子(请注意这些只是后端请求响应时间,不包括dom、js、image等加载时间):

  1. 用户仪表板 - 第一次请求大约需要 20 秒。后续加载大约需要 1 秒
  2. 正在加载一些对象 - 第一次请求大约需要 7 秒。刷新会让你大约 2 秒。在第一次点击该操作后,使用相同操作加载其他对象也更快

我意识到某些加速可能是由于查询缓存,但我想知道是否仅此而已。我使用的是标准计划并且确实启用了“始终开启”,所以我知道这不是问题所在。这似乎是每个动作都发生的。因此,即使用户已经访问过 action1,现在第一次访问 action2,他们仍然会遇到缓慢的情况。

我可以在这里寻找什么来解决?是否有任何 azure 特定设置?

【问题讨论】:

  • 您的应用是否会调用其他可能不是“始终开启”的服务?
  • 不,这是一个完全托管的网络应用程序。
  • 您可以测量单个事物在应用程序中花费的时间,以确定需要这么长时间。它可以是数据库连接、查询,也可以是视图编译/渲染。没有指标就很难说。

标签: c# azure asp.net-mvc-4 azure-sql-database azure-web-app-service


【解决方案1】:

请按如下所示运行您的查询:

`--你的查询在这里

从 sys.dm_exec_session_wait_stats 中选择 * 其中 session_id = @@spid 按 wait_time_ms desc 排序 `

最后一个 SELECT 语句将告诉我们第一次运行需要这么多时间的原因。

在较低层上运行的大型查询的 IO 性能可能很差。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我们注意到的一件事是,当一个操作在几个小时内首次加载时,请求时间会显着减慢。

    正如您所做的那样,在 Azure Web 应用程序上启用“Always On”设置可以提高应用程序的响应能力,尤其是在用户不经常访问应用程序的情况下。

    这些只是后端请求响应时间,不包括dom、js、image等加载时间

    请检查这些动作的代码逻辑,确保代码高效。此外,您可以尝试为那些页面指定custom initialization/warm-up actions(客户端第一次浏览页面时总是需要较长的响应时间)。如果可能,您可以缓存经常使用的数据,而不是每次客户端浏览网页时都从数据库(或其他来源)中检索数据。

    <system.webServer>
      <applicationInitialization doAppInitAfterRestart="true">
        <add initializationPage="/Home/Contact" hostName="appname.azurewebsites.net" />
      </applicationInitialization>
    </system.webServer>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-06
      • 2013-10-31
      • 1970-01-01
      • 2012-05-23
      • 2020-09-07
      • 2018-07-05
      • 2014-02-04
      • 2016-05-26
      相关资源
      最近更新 更多