诊断应用程序的性能问题可能很困难,尤其是在动态云中的生产环境中运行时。 应用程序中的响应速度缓慢可能是由处理管道中请求的基础结构、框架或应用程序代码引起的。
代码优化(Azure Application Insights 中基于 AI 的服务)与适用于 .NET 的 Application Insights Profiler 协同工作,在代码级别检测 CPU 和内存使用性能问题,并就如何修复这些问题提供建议。
使用从生产环境收集的实时性能数据和见解,做出明智的决策并优化代码。
.NET Profiler 与代码优化协同工作,为性能问题检测提供全面的方法。
代码优化可识别、分析和解析 Application Insights Profiler for .NET 收集的分析数据。 当 .NET Profiler 将数据上传到 Application Insights 时,我们的机器学习模型会分析一些数据,以查找应用程序代码可以优化的位置。 代码优化:
- 显示随时间而收集的聚合数据。
- 将数据与应用程序代码中的方法和函数连接。
- 通过查找代码中的瓶颈来缩小问题范围。
- 基于洞察提供代码级性能优化。
收集环境数据后,代码优化会每小时提供代码级建议。 默认情况下,聚合数据视图显示最近发现问题的滚动 24 小时窗口,其中包含 30 天的历史记录供你查看和分析过去的事件。
识别和分析代码优化结果后,可以使用代码优化 Visual Studio 和 Visual Studio Code 扩展在代码中解决这些问题。 使用这些扩展,与 GitHub Copilot 交互,以接收基于代码优化见解的代码修复。
.NET Profiler 侧重于跟踪特定请求,以毫秒为单位。 它针对应用程序中的问题提供出色的“大局”视图,以及解决这些问题的一般最佳做法。
使用 Application Insights Profiler for .NET,无论在何种情况下,都可以捕获、识别和查看 Azure 中运行的应用程序的性能跟踪。 .NET Profiler 跟踪过程自动大规模执行,并且不会对用户产生负面影响。 .NET Profiler 将识别:
- 客户发出的每个 Web 请求的平均、最快和最慢响应时间。
- 在处理特定 Web 请求时最耗时的“热点”代码路径。
在所有 Azure 应用程序上启用 Profiler for .NET,以使用以下触发器收集数据:
- 采样触发器:大约每小时随机启动一次 Profiler,持续 2 分钟。
- CPU 触发器:当 CPU 使用率百分比超过 80% 时启动 Profiler。
- 内存触发器:当内存使用率超过 80% 时启动 Profiler。
可以配置、启用或禁用上述每个触发器。
启用 适用于 .NET 的 Application Insights Profiler 后,会自动生成代码优化。 默认情况下,探查器每小时主动收集 30 秒的日志,或者在 CPU 或内存使用率过高期间收集 30 秒的日志。 每小时跟踪(称为采样)非常适合主动优化,而高 CPU 和内存跟踪(称为触发器)对于被动故障排除非常有用。
备注
Application Insights Profiler for .NET 主动运行并收集跟踪时,通常会导致服务器的 CPU 和内存开销增加 5% 至 15%。
存储 .NET Profiler 捕获的数据无需额外付费。 该数据将在 15 天后自动删除。
某些代码优化功能(如代码级修复建议)需要适用于 GitHub 的 Copilot。
随着框架和 Azure 服务的发展,可以通过多种选项为在 Azure 上运行的 .NET 应用启用 .NET Profiler。
Azure 服务 | 如何启用 | 详细信息 |
---|---|---|
大多数 Azure 服务 | 应用程序中的代码更改 (最普遍) |
如果 .NET 应用在 Azure PaaS 服务或容器的变体上运行,可以在两个选项之间进行选择,以便启用 .NET Profiler: - Application Insights Profiler for ASP.NET Core ,使用 Application Insights SDK,或 - 新的Azure Monitor OpenTelemetry Profiler for NET(预览版),它使用 Azure Monitor OpenTelemetry Distro |
Azure 应用服务 | 您的应用程序无需变更代码 | 由于预安装了 Profiler,因此可以在门户中为以下项启用 Profiler for .NET: - Azure 应用服务 - Windows 上的 .NET 应用 - Azure Functions - 应用服务计划 |
虚拟机 | 您的应用程序无需变更代码 | 在应用程序代码中启用 Application Insights SDK 后,可以在 ARM 模板中为 .NET 启用 Profiler。 - 适用于 Windows 的 Azure 虚拟机和虚拟机规模集 - Azure Service Fabric |
- Azure 应用服务 - Windows 上的 .NET 应用
- Azure 应用服务 - Linux 上的 .NET 应用
- 容器:
- Azure 容器应用 (Azure Container Apps)
- Azure Kubernetes 服务
- Azure 容器实例
- Azure 虚拟机和适用于 Windows 的虚拟机规模集群
- Azure Functions - 应用服务计划
- Azure Service Fabric
备注
还可以使用适用于 Azure Monitor Application Insights 的 Java 探查器(目前为预览版)。
代码优化可在 Application Insights 所在的区域中使用。 可以使用以下命令检查可用区域:
az account list-locations -o table
可以使用连接字符串设置显式区域。 通过示例详细了解连接字符串。
分析 Web 应用:
- 虽然可以免费使用 .NET Profiler,但 Web 应用必须至少托管在 Azure 应用服务 Web 应用功能的基本层中。
- 每个 Web 应用只能附加 1 个探查器。
- 探查器
如果已启用 Profiler for .NET 但未看到跟踪,请参阅故障排除指南。 - 代码优化
遇到问题了? 查看 代码优化故障排除指南 以获取场景解决方案。
了解如何在 Azure 服务上启用具有代码优化的 .NET Profiler: