使用 Application Insights 查找和诊断性能问题

Application Insights 从应用程序收集遥测,以帮助分析操作和性能。 可以使用此信息确定可能发生的问题,或识别对用户影响最大的应用程序改进。 本教程将从应用程序服务器组件和客户端这两方面介绍分析性能的过程。

学习如何:

  • 识别服务器端操作的性能。
  • 分析服务器操作,确定性能减慢的根本原因。
  • 识别最慢的客户端操作。
  • 使用查询语言分析页面视图的详细信息。

先决条件

为完成此教程:

  • 使用以下工作负荷安装 Visual Studio 2019
    • ASP.NET 和 Web 开发
    • Azure 开发
  • 将 .NET 应用程序部署到 Azure 并启用 Application Insights SDK
  • 对应用程序启用 Application Insights profiler。

登录 Azure

登录 Azure 门户

识别缓慢的服务器操作

Application Insights 收集应用程序中不同操作的性能详细信息。 识别持续时间最长的操作,可以诊断潜在问题,或有针对性地进行开发,以提高应用程序总体性能。

  1. 选择“Application Insights”,然后选择订阅 。

  2. 选择“调查”下的“性能”菜单或选择“服务器响应时间”图表,打开“性能”面板。

    显示了“性能”视图的屏幕截图。

  3. “性能”屏幕将显示应用程序每项操作的计数和平均持续时间。 此信息可用于识别对用户影响最大的操作。 在此示例中,很可能应调查“GET Customers/Details”和“GET Home/Index”,因为它们持续时间相对较长、调用次数相对较多 。 其他操作可能持续时间更长,但调用次数极少,因此改进它们可能收效甚微。

    显示了“性能”服务器面板的屏幕截图。

  4. 此图正显示一段时间内所选操作的平均持续时间。 可以切换到第 95 个百分点值,以便查找性能问题。 将要调查的操作固定到图中以添加该操作。 此图表显示存在值得调查的峰值。 若要进一步查明原因,请缩小图表的时间范围。

    显示“固定”操作的屏幕截图。

  5. 右侧的性能面板显示所选操作的不同请求的持续时间的分布情况。 缩小窗口,从大约第 95 个百分点值开始。 “前 3 个依赖项”见解卡大致说明了外部依赖项可能是造成事务速度慢的原因。 选择带示例数的按钮以查看示例列表。 然后选择任意示例以查看事务详细信息。

  6. 可以大致看到,调用 Fabrikamaccount Azure 表所花的时间占了事务总持续时间的大部分。 也可看到有一个异常导致其失败。 选择列表中的任意项,然后可以在右侧查看其详细信息。

    显示操作端到端事务详细信息的屏幕截图。

  7. 探查器可显示操作所运行的实际代码和每步所需的时间,因而可以更深入地进行代码级别的诊断。 由于探查器周期性运行,所以可能未记录到某些操作。 随着时间推移,应可记录到更多操作。 若要对操作启用探查器,请选择“探查器跟踪”。

  8. 跟踪显示每个操作的单个事件,以便诊断整个操作持续时间的根本原因。 选择持续时间最长的示例之一。

  9. 选择“热路径”,以突出显示对操作总持续时间贡献最大的一系列特定事件。 在此示例中,可以看到最慢的调用来自 FabrikamFiberAzureStorage.GetStorageTableData 方法。 最耗时的部分是 CloudTable.CreateIfNotExist 方法。 如果每次调用该函数时都执行这行代码,则将使用不必要的网络调用和 CPU 资源。 修复该代码的最佳方式是将此行放入仅执行一次的某个启动方法中。

    显示探查器详细信息的屏幕截图。

  10. 屏幕顶部的“性能提示”对“持续时间过长是由等待造成的”这一评估结果提供了支持。 选择“等待”链接可获得解释不同事件类型的文档。

    显示性能提示的屏幕截图。

  11. 若要进一步分析,请选择“下载跟踪”以下载跟踪。 可以使用 PerfView 查看此数据。

使用服务器的日志数据

日志提供丰富的查询语言,可用于分析 Application Insights 收集的所有数据。 可以使用此功能对请求和性能数据进行深度分析。

  1. 返回到“操作详细信息”面板,然后选择“日志”图标“在日志中查看(分析)”。

  2. “日志”屏幕随即打开,其中包含对面板中每个视图的查询。 可以直接运行这些查询,或根据需要对其进行修改。 第一个查询显示此操作随时间推移的持续时间。

    显示日志查询的屏幕截图。

标识缓慢的客户端操作

Application Insights 不仅可以识别要优化的服务器进程,还可以从客户端浏览器的角度进行分析。 此信息有助于确定应对客户端组件进行的改进,甚至识别与不同浏览器或不同位置有关的问题。

  1. 选择“调查”下的“浏览器”,然后选择“浏览器性能”。 或者,选择“调查”下的“性能”,然后选择右上角的“服务器/浏览器”切换按钮切换到“浏览器”选项卡,以打开浏览器性能摘要。 此视图从浏览器的角度提供了应用程序各项遥测的可视摘要。

    显示浏览器摘要的屏幕截图。

  2. 选择一个操作名称,选择右下角的“示例”按钮,然后选择一个操作。 右侧会打开端到端事务详细信息,可以在其中查看“页面视图属性”。 可以查看请求页面的客户端的详细信息,包括浏览器类型及其位置。 此信息有助于确定性能问题是否与特定类型的客户端相关。

    显示“页面视图属性”的屏幕截图。

使用客户端的日志数据

与针对服务器性能收集的数据一样,Application Insights 允许使用日志深度分析所有客户端数据。

  1. 返回到浏览器摘要,选择“日志”图标“在日志中查看(分析)”。

  2. “日志”屏幕随即打开,其中包含对面板中每个视图的查询。 第一个查询显示不同页面视图随时间推移的持续时间。

    显示“日志”屏幕的屏幕截图。