如何快速定位占用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)。通过上述操作,可获取该进程下指定线程的堆栈,如下: