JVM内存及CPU占用过高排查
问题排查方法
方法一
通过top命令查看当前CPU及内存情况
top 86786 java 98.4 13:22.7
获得pid,通过
说明: -H 指显示线程,-p 是指定进程top -H -p86786
查看有问题的线程可以看到两个CPU或内存占用较高的线程,记下PID( 此处的PID即为线程ID标识) ,将其从十进制转成十六进制表示,如0x7f1
printf "%x\n" tid 0x7f1
通过jstack命令获取当前线程栈,可暂时保存到一个文件tempfile.txt中,在tempfile.txt中查找nid=0x7f1的线程
jstack pid | grep '0x7f1'
方法二
- 查进程ID
ps -ef|grep java
或ps -ef|grep java
ps -mp 8514 -o THREAD,tid,time,pmem
查出进程下线程信息,可以查出%CPU高,TIME长的线程ID(tid)printf "%x\n" 8593
tid(8593)转化为十六进制2191jstack 8514|grep 2191
打印出堆栈信息
常用命令
查看指定进程下线程的ID,时间,cpu,内存情况并根据消耗时间排序ps -mp 9793 -o user,pid,ppid,tid,time,%cpu,%mem,cmd | sort -rk5
相关推荐
AnotherSpace 2020-11-03
Claroja 2020-10-16
wpfeitian 2020-10-05
伏雌摘星阁 2020-07-29
jackadmi 2020-06-24
QiHsMing 2020-06-08
SoarFly00 2020-06-03
拿什么来拯救自己 2020-05-28
zhangwentaohh 2020-05-21
zhangskd 2020-05-10
JakobHu 2020-05-09
manimnchn 2020-05-01
andylanzhiyong 2020-04-30
仰起嘴角 2020-04-21
yishujixiaoxiao 2020-04-20
fenxinzi 2020-04-14
sgafdsg 2020-04-11
abdstime 2020-04-10