如何快速定位占用CPU&内存较高的进程

生产环境,有时会遇到cpu、内存占用率飙升的现象,引发监控系统的报警。遇到这这种情况,如何快速定位出到底是哪个进程、哪个线程在占用?逐步执行以下命令,可快速定位

1.执行top命令

会列出当前机器运行的所有进程,以及CPU、内存占用情况,动态变化

top -c

2.查看进程中线程

通过上一步操作,已经获得高占用进程的process_id,通过如下命令可获取该进程下的线程id

top -Hp process_id

3.转换线程id为十六进制

因为堆栈日志显示的是线程ID的十六进制nid,所以需要将线程ID即pid转换为十六进制

printf "%x \n" pid

4.查看进程下的线程堆栈情况

jstack -l 844972|grep ce4ac -A 10

如上844972为进程ID(process_id),ce4ac为转换后十六进制的线程ID(pid)。通过上述操作,可获取该进程下指定线程的堆栈,如下:

posted @ 2020-10-20 10:39  笨小孩cbq  阅读(479)  评论(0)    收藏  举报