You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PerfView分析ASP.NET Core Web API性能及App Insight栈追踪?

用PerfView测试ASP.NET Core Web API接口性能

步骤概览

  • 准备环境:确保API所在服务器安装了对应版本的.NET Core运行时,将PerfView下载到服务器本地(远程捕获延迟较高,优先本地部署)。
  • 配置捕获会话:
    1. 打开PerfView,点击顶部菜单Collect -> Collect。
    2. 在Additional Providers输入框中添加关键提供者:Microsoft.AspNetCore、System.Net.Http,若用到EF Core则追加Microsoft.EntityFrameworkCore。
    3. 根据测试目标勾选选项:排查CPU瓶颈选Collect CPU Samples,分析内存分配选Collect GC Heap Allocations,定位线程阻塞问题选Collect Thread Time。
    4. 设置输出目录后,点击Start Collection启动捕获。
  • 模拟流量压测:用wrk、批量curl脚本或Postman集合Runner对目标API发起持续请求,模拟真实业务流量(注意压测强度不要超出服务器负载能力)。
  • 停止捕获并分析:压测结束后点击Stop Collection,PerfView会生成.etl日志文件。重点查看:
    • CPU Stacks:按CPU占比排序,定位热点方法(比如某段业务逻辑占用大量CPU)。
    • GC Heap Allocations:查看高频分配的对象类型、大对象堆(LOH)分配情况,排查内存泄漏或过度分配问题。
    • Thread Time:分析线程等待、阻塞的调用栈,定位锁竞争、IO阻塞(比如慢数据库查询)的根源。
App Insight探查器 vs 服务器本地捕获:场景选择

App Insight探查器的适用场景

  • 生产环境无法直接操作服务器(比如云托管的Azure App Service),无需部署额外工具,直接通过App Insight控制台查看数据。
  • 快速定位偶发慢请求:自动关联请求ID与调用栈,能看到单个慢请求的全链路耗时(比如控制器方法、数据库查询、外部API调用的各自耗时)。
  • 长期性能监控:统计一段时间内的请求性能趋势,结合错误率、请求量等数据,快速定位性能退化的时间点。

服务器本地运行PerfView的优势

  • 数据更全面:能捕获进程级的所有细节,包括非托管代码调用、系统内核级操作(比如磁盘IO、网络栈),适合排查复杂性能问题。
  • 无采样限制:App Insight默认会对请求采样,而本地捕获能获取100%的请求数据,适合精准分析特定场景下的性能瓶颈(比如高并发下的CPU飙升)。
  • 自定义配置灵活:可以根据测试目标调整捕获参数,比如只捕获特定进程、过滤特定请求,针对性更强。

选择建议

  • 先通过App Insight探查器快速定位问题范围:比如确定是数据库查询慢还是业务逻辑耗时高。
  • 当需要深度分析根源(比如热点代码、内存泄漏、线程锁竞争)时,直接在服务器上用PerfView结合压测工具进行捕获,能得到更精准的诊断数据。

内容的提问来源于stack exchange,提问作者itsme017

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 05:10:56