一 概述
突然收到线上服务器的CPU占用过高,接近80%。
二 排查过程
先通过TOP命令查看占有CPU的进程信息。
top命令参考资料:
TOP命令输出完全解释_欣宇专栏-CSDN博客https://blog.csdn.net/lv_xinmy/article/details/8574226
linux下top命令详细介绍 - DiYong - 博客园 (cnblogs.com)https://www.cnblogs.com/Diyo/p/11411157.html 再通过top命令查看占用CPU资源高的进程中的某些占用CPU资源高的线程
接着通过printf命令获取占用CPU资源过高的线程id的进制形式
printf "%x" pid
然后通过jstack命令将该进程各个线程程的栈信息以文件形式输出
jstack PID > jstack.txt
最后再通过线程id的十六进制形式找到对应的信息,可以看到是队列处理线程任务的时候内存图片占用较高。
参考资料:
jstack命令(Java Stack Trace)_冯立彬的博客-CSDN博客_jstack命令https://blog.csdn.net/fenglibing/article/details/6411940 线上CPU飙升问题排查 - 简书 (jianshu.com)
https://www.jianshu.com/p/b72c12195c66 线上服务导致cpu飙升问题排查_xiaoming120915的博客-CSDN博客
https://blog.csdn.net/xiaoming120915/article/details/111879337 如何使用jstack分析线程状态 - Jessica程序猿 - 博客园 (cnblogs.com)
https://www.cnblogs.com/wuchanming/p/7766994.html线上服务器cpu飙升问题排查_A___B___C的博客-CSDN博客
https://blog.csdn.net/A___B___C/article/details/107769289