1. top命令
A 根据进程分组显示
P 根据cpu使用降序显示
M 根据内存使用降序显示
2. 显示某个进程的线程
top -Hp <pid>
3. 打印某个进程下某个异常线程的状态
jstack <pid> |grep <16进制表示的线程>
========================
线上问题出现,处理步骤:
1.查看日志,是否有异常.
2.查看CPU,内存,磁盘I/O是否有异常.
如果CPU占用异常,一般是栈异常. jstack <pid> > jstack_pid.log
如果内存占用异常,一般是堆异常. jmap -dump:format=b,file=heapdump.phrof pid
如果磁盘I/O异常,看是否有大量的文件读写. iotop -oP
栈异常排查,top 找出进程,top -Hp找出线程,printf %x 转化为16进制.jstack <pid> |grep 线程 查看这个线程哪个程序块锁住了.
堆异常排查,
jmap -heap <pid> 查看新生代,老年代,元数据区大小.
jmap -histo <pid> |head -10