cup100-percent
工作中遇到java进程 cpu100% 的问题,进行总结
top
使用 top -Hp pid 查看对应进程里的所有线程
按 cpu 使用率 排序
jstack查看线程堆栈
使用jstack pid 或者 kill -3 pid 查看线程堆栈
连续几秒 打印 jstack ,经常出现的线程,可能是引起cpu 100% 的原因
火焰图
参考 https://cloud.tencent.com/developer/article/1554194
可以用 async-profiler 工具
如果是一直100%,则使用
./bin/profiler -d 2 -f result.html pid
表示 统计2s内 的cpu时间轮 主要耗在哪几个线程上
例如 log4j 2s内 线程占用了50%的时间,这个就不正常了
再往上看,用了asynAppender,因此判断是刷了太多异步日志导致cpu 100%
https://ask.qcloudimg.com/http-save/yehe-1201376/n5l625n4oj.jpeg

nmon、perf等系统监控工具
thread 切换频率过快 –> springcloud eureka 心跳同步问题