记录排查线上java程序cpu占用过高中使用的操作以便后续查询
排查线上java程序cpu占用过高
原因
线上服务器占用CPU过高
过程
- 通过top命令查询进程列表,第一个是cpu占用最高的,是一个定时任务的微服务(进入后c可以查询进程详细信息),记住pid
1 | top |
- 通过上一步的pid,查看该进程中的线程列表
1 | top -Hp 31273 |
(这里的31273换成你上一步查询的pid)
然后我这里看到有一个线程异常的高,记住其pid,然后转换成16进制(可以用win自带计算器转换)
- 通过jstack命令查询该线程的堆栈信息
1 | jstack 31273 |grep 84b -A 30 |
(这里的31273还是换成第一步的进程pid,84b换成第二步的线程的pid的16进制,然后-A后面的30代表查询堆栈信息30行)
到这里就很明了了,我这里是因为重算导致的
- (错误的)我想单单杀掉这个线程,还用了-9,但是进程也直接死掉了。。。
此为博主副博客,留言请去主博客,转载请注明出处:https://www.baby7blog.com/myBlog/126.html