CPU使用率高问题定位
文章目录
本文介绍如果利用工具定位CPU使用率高的问题。
总体思路
总体思路是逐步定位到引起CPU使用率高的进程、线程及其调用栈。
先使用 top 或者 htop 定位问题进程。
再通过 top -H -p 问题进程号
打开线程模式(或者打开top或htop后按H)定位问题线程。
最后使用(语言)相关的工具分析该线程的调用栈。
Java
可本地运行复现的,使用 VisualVM 分析比较方便。
不方便本地复现的服务进程,可以使用 jstack
(需要转换为16进制线程号) 或者 jvmtop 分析。
|
|
cpp
带-g
选项编译,不要strip
符号表。
perf
|
|
-a
是采样所有CPU,-g
是采样调用关系。
具体可以参考 perf分析性能瓶颈 的说明。
VTune
如果CPU是Intel的,那么还可以使用 VTune 分析。
实际项目经验,有时候perf看不出来的调用,VTune也能够继续深入查看,进而定位到问题所在。
go
pprof
go tool pprof
trace
go tool trace
具体使用可以参考 High Performance Go Workshop 。