使用 Application Insights Profiler for .NET 探查 Azure 中的生产应用程序

诊断应用程序的性能问题可能很困难,尤其是在动态云中的生产环境中运行时。 应用程序中的响应速度缓慢可能是由处理管道中请求的基础结构、框架或应用程序代码引起的。

使用 Application Insights Profiler for .NET,无论在何种情况下,都可以捕获、识别和查看 Azure 中运行的应用程序的性能跟踪。 .NET Profiler 跟踪过程自动大规模执行,并且不会对用户产生负面影响。 .NET Profiler 将识别:

  • 客户发出的每个 Web 请求的平均、最快和最慢响应时间。
  • 在处理特定 Web 请求时花费时间最长的“热”代码路径。

在所有 Azure 应用程序上启用 Profiler for .NET,以使用以下触发器收集数据:

  • 采样触发器:大约每小时随机启动一次 Profiler,持续 2 分钟。
  • CPU 触发器:当 CPU 使用率百分比超过 80% 时启动 Profiler。
  • 内存触发器:当内存使用率超过 80% 时启动 Profiler。

可以配置、启用或禁用上述每个触发器。

采样率和开销

在托管应用程序且已启用 Profiler 的每台虚拟机上,Profiler 每小时随机运行 2 分钟。

注意

当探查器主动运行并收集跟踪时,它通常会导致服务器增加 5% 到 15% 的 CPU 和内存开销。

存储探查器捕获的数据无需额外付费。 该数据将在 15 天后自动删除。

.NET Profiler 支持

Profiler 适用于以下 Azure 服务中部署的 .NET 应用程序。 在下面的链接中查看有关为每个服务类型启用 Profiler 的具体说明。

计算平台 .NET (>= 4.6) .NET Core
Azure 应用服务
Azure 虚拟机和适用于 Windows 的虚拟机规模集
Azure 虚拟机和适用于 Linux 的虚拟机规模集
Azure 云服务
适用于 Windows 的 Azure 容器实例
适用于 Linux 的 Azure 容器实例
Kubernetes
Azure Functions
Azure Service Fabric

注意

还可以使用适用于 Azure Monitor Application Insights 的 Java 探查器(目前为预览版)。

如果已启用 Profiler for .NET 但未看到跟踪,请参阅故障排除指南

限制

  • 数据保留:默认数据保留期为 5 天。
  • 分析 Web 应用
    • 虽然可以免费使用 .NET Profiler,但 Web 应用必须至少托管在 Azure 应用服务 Web 应用功能的基本层中。
    • 每个 Web 应用只能附加 1 个探查器。
    • Linux 上的 .NET Profiler 仅在基于 Windows 的 Web 应用中受支持。

后续步骤

了解如何在 Azure 服务上启用 .NET Profiler: