
微软正在通过Code Optimizations增强.NET开发者的工具集。这个特性是Azure Monitor产品的一部分,现在能够与 Application Insights 中的.NET Profiler 协作运行,自动检测生产应用程序中的 CPU、内存和线程问题,并提供代码级别的建议来修复它们。
Code Optimizations 是一个基于 AI 的服务,运行在 Azure Application Insights 上,使用Application Insights Profiler for .NET收集的遥测数据来分析运行时的行为,能够为单个方法找到性能瓶颈,并提供可操作性的建议。开发者可以查看他们的生产和非生产环境随时间聚合的数据(默认为 24 小时的滚动窗口,历史记录可长达 30 天)。
Code Optimization 建议的提高代码性能的行为(来源:微软)
Code Optimizations 中增强的特性包括检测阻塞线程的问题、直接从概览页面分配GitHub Copilot任务,以及预览支持OpenTelemetry收集器而非 Application Insights 专有的收集器。
当应用程序启用了分析功能时,.NET Profiler 会以三种方式触发:作为采样触发器(每小时一次,持续 30 秒)、当 CPU 超过 80%阈值时或当内存使用超过 80%阈值时。这些参数是可配置的,而 profiler 跟踪过程会最小化对用户的影响。
开发者可以看到跨订阅和资源的Code Optimizations的综合建议。在检查代码的问题时,他们可以使用 Visual Studio 或 VS Code 扩展(与 GitHub Copilot 集成)来获取建议甚至生成修复,或创建分配给 Copilot Agent 的 GitHub 问题。
这方面也会有一些开销,profiler 运行时,开发者的平均 CPU 和内存影响在 5-15%之间。存储 profiler 跟踪数据在 Azure 中不会产生额外费用,数据会保留 15 天。
对于许多 Azure 服务来说,启用.NET Profiler 相对非常简单。App Service 和 Functions(在适当的订阅计划上)、Virtual Machines、Virtual Machine Scale Sets、Azure Kubernetes Service、Container Apps、Service Fabric 和容器都得到了支持。在某些情况下,支持 Code Optimizations 不需要额外的代码。
开发者至少需要 Azure Web Application profiling 的 Basic 层。每个 Web 应用程序只有一个活跃的 profiler。区域可用性与 Application Insights 区域一致。
微软希望从使用 Code Optimizations 的开发者那里征求反馈,以指导未来的增强。反馈表单可以在这里找到。
原文链接:
Improved Application Insights Code Optimizations Identify .NET Performance Bottlenecks Automatically







评论