使用 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。
可以配置、启用或禁用上述每个触发器。
采样率和开销
默认情况下,探查器每隔一小时收集 30 秒的跟踪,或者在 CPU 或内存使用率过高期间收集 30 秒的跟踪。 每小时跟踪(称为采样)非常适合主动优化,而高 CPU 和内存跟踪(称为触发器)对于被动故障排除非常有用。
注意
当探查器主动运行并收集跟踪时,它通常会导致服务器增加 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: