CPU指标异常的分析方法

对于程序员来说,如果需要分析软件的性能问题就需要对软件性能指标有一个基本的了解,下面我们就通过案例分析来了就一下,CPU指标异常的分析方法。

CPU指标异常的分析方法

一、CPU相关指标异常的分析思路是什么?

1)CPU利用率:如果我们观察某段时间系统或应用进程的CPU利用率一直很高(单个core超过80%),那么就值得我们警惕了。我们可以多次使用jstack命令dump应用线程栈查看热点代码,非Java应用可以直接使用perf进行CPU采采样,离线分析采样数据后得到CPU执行热点(Java应用需要符号表进行堆栈信息映射,不能直接使用perf得到结果)。

2)CPU平均负载:平均负载高于CPU数量70%,意味着系统存在瓶颈点,造成负载升高的原因有很多,在这里就不展开了。需要注意的是,通过监控系统监测平均负载的变化趋势,更容易定位问题,有时候大文件的加载等,也会导致平均负载瞬时升高。如果1分钟/5分钟/15分钟的三个值相差不大,那说明系统负载很平稳,则不用关注,如果这三个值逐渐降低,说明负载在渐渐升高,需要关注整体性能;

3)CPU上下文切换:上下文切换这个指标,并没有经验值可推荐(几十到几万都有可能),这个指标值取决于系统本身的CPU性能,以及当前应我要赚钱网用工作的情况。但是,如果系统或者应用的上下文切换次数出现数量级的增长,就有很大概率说明存在性能问题,如非自愿上下切换大幅度上升,说明有太多的线程在竞争CPU。

CPU上的的一些异动,通常也可以从线程上观测到,但需要注意的是,线程问题并不完全和CPU相关。

应用中的总的线程数;

应用中各个线程状态的分布;

线程锁的使用情况,如死锁、锁分布等;

二、关于线程,可关注的异常有:

1)线程总数是否过多。过多的线程,体现在CPU上就是导致频繁的上下文切换,同时线程过多也会消耗内存,线程总数大小和应用本身和机器配置相关;

2)线程的状态是否异常。观察WAITING/BLOCKED线程是否过多(线程数设置过多或锁竞争剧烈),结合应用内部锁使用的情况综合分析;

3)结合CPU利用率,观察是否存在大量消耗CPU的线程。

【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。

上一篇:产品经理需要掌握的活动预热方法分享
下一篇:没有了