『性能调优』在开发环境中,.NET如何排查CPU飙高原因

简介: 📣读完这篇文章里你能收获到 - VS自带的性能排查工具使用 - CPU排查的分析过程- 排查经验分享
背景:
由于生产环境中频频报CPU过高问题,而且是断断续续的,才有了这篇文章,由于为生产环境的项目,故本文会有大量的马赛克,但不影响阅读及实操。

请添加图片描述
📣读完这篇文章里你能收获到

  • VS自带的性能排查工具使用
  • CPU排查的分析过程
  • 排查经验分享

请添加图片描述

一、收集需要分析的CPU运行数据

  • 工具:VS自带的性能诊断工具
  • 1、打开要在 Visual Studio 中调试的项目,并在应用中设置检查 CPU 使用率的断点。
  • 2、在函数末尾或想要分析的代码区域中设置第二个断点。
  • 3、通过设置两个断点,可将数据收集限制到想要分析的代码部分。
  • 4、将自动显示 “诊断工具” 窗口,除非你已将其关闭。 该窗口路径:“调试” > “Windows” > “显示诊断工具”。
  • 5、可以使用工具栏上的“选择工具”设置,选择是否查看 CPU 使用率内存使用或同时查看两者。
    在这里插入图片描述
  • 6、代码进入到第二个断点后就可以看到需要分析的数据了
    在这里插入图片描述

请添加图片描述

二、分析收集到的CPU数据

  • 1、 点击右侧的打开详细信息,建议通过检查 CPU 使用率下的函数列表开始分析数据,并且通过CPU总计单位倒序显示,然后确定执行大部分工作的函数,最后仔细查看每一个函数。

在这里插入图片描述

  • 2、 在函数列表中,选择CPU占比大的方法右击调用方/被调用方视图
    在这里插入图片描述

  • 3、 通过调用视图定位核心问题,不断进入占比大的方法,根据经验排查可优化的点
    在这里插入图片描述
  • 4、 到这里的时候发现Respository.GetModel()这个方法占比高达21%
  • 5、 分析代码,定位问题

发现诊断器指向的CPU占比较高的方法为这个
在这里插入图片描述
优化:增加重载方法,从外部传Enterprise,不再单独查数据库获取EnterpriseModel

请添加图片描述

三、对比优化前后数据变化

注意:需要跑多次,再对数据的均值进行对比,避免出现偶然误差
  • 1、CPU变化趋势

优化前:
在这里插入图片描述

优化后:
在这里插入图片描述

由于趋势图是按100来格式化数据,因此看不到数据的波动的大变化
  • 2、CPU单位计数

优化前:总计数357831113273 平均:3320
在这里插入图片描述

优化后:总计数279321582257 平均:2402
在这里插入图片描述

四、结果对比

通过CPU计数的变化可粗略得出此次优化CPU计数平均下降了918
优化率为918/3320≈27.7%

有时候不起眼的问题,也可能是引起CPU飙高的根源
相关文章
|
2月前
|
缓存 关系型数据库 分布式数据库
PolarDB常见问题之数据库cpu突然飙高如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
2月前
|
监控 Java 索引
cpu使用率过高和jvm old占用过高排查过程
cpu使用率过高和jvm old占用过高排查过程
37 2
|
6月前
|
Arthas 测试技术
Arthas排查生产环境CPU飚高问题
Arthas排查生产环境CPU飚高问题
102 0
Arthas排查生产环境CPU飚高问题
|
4天前
|
搜索推荐 Linux 网络安全
记一次CPU 100%的问题排查过程
记一次CPU 100%的问题排查过程
11 0
|
2月前
|
SQL 运维 NoSQL
【Redis 故障排查】「连接失败问题排查和解决」带你总体分析CPU及内存的使用率高问题排查指南及方案
【Redis 故障排查】「连接失败问题排查和解决」带你总体分析CPU及内存的使用率高问题排查指南及方案
37 0
|
4月前
|
IDE 前端开发 JavaScript
【C#】C# 开发环境配置(Rider 一个.NET 跨平台集成开发环境)
【1月更文挑战第26天】【C#】C# 开发环境配置(Rider 一个.NET 跨平台集成开发环境)
|
4月前
|
监控 Java Linux
疯狂飙高!怎么排查CPU导致系统反应缓慢的问题?
疯狂飙高!怎么排查CPU导致系统反应缓慢的问题?
|
5月前
|
安全 Unix Linux
Linux【问题记录 02】腾讯云 cron、sshd 进程CPU占用超95%(亡命徒 Outlaw 僵尸网络攻击)问题排查及处理步骤
Linux【问题记录 02】腾讯云 cron、sshd 进程CPU占用超95%(亡命徒 Outlaw 僵尸网络攻击)问题排查及处理步骤
64 0
|
5月前
|
弹性计算 Linux 数据安全/隐私保护
Linux【问题记录 01】阿里云CPU使用率 100% ECS 同时连接数峰值 25k+ 问题排查无果(附阿里云重新初始化云盘详细步骤)
Linux【问题记录 01】阿里云CPU使用率 100% ECS 同时连接数峰值 25k+ 问题排查无果(附阿里云重新初始化云盘详细步骤)
139 0
|
7月前
|
Java 调度
服务器常见问题排查(一)——cpu占用高、上下文频繁切换、频繁GC
文章主要讨论了服务器中常见性能问题的一些排查思路,这篇文章主要讨论了CPU负载过高,频繁GC和频繁切换上线文这三个问题。
377 0
服务器常见问题排查(一)——cpu占用高、上下文频繁切换、频繁GC