tomcat jboss 對於CPU及內存佔用過高的分析

Java线上应用故障排查之一:高CPU占用

1,top 命令獲取高CPU 的java pid

top

2,top -H -p pid 查找進程對應的線程ID tid或者使用

ps -mp pid -o THREAD,tid,time

找出高CPU的tid

3,其次将需要的线程ID转换为16进制格式:

printf "%x\n" tid

4,根據以上找出的tid使用jstack 

jstack pid |grep tid -A 30

grep -A 表示這一行往後30行

grep -B 表示這一行往前30行

具體可以參考這篇文章http://blog.csdn.net/blade2001/article/details/9065985

Java线上应用故障排查之二:高内存占用

1,top 命令獲取高mem的java pid

top

2,top -H -p pid 查找進程對應的線程ID tid或者使用

ps -mp 9004 -o THREAD,tid,time,rss,size,%mem

找出高mem佔用的tid,但是針對內存這個命令無法看到具體的線程佔用內存的大小

3,遗憾的是,发现PS命令可以查到具体进程的CPU占用情况,但是不能查到一个进程下具体线程的内存占用情况。

只好寻求其他方法了,幸好Java提供了一个很好的内存监控工具:jmap命令

jmap命令有下面几种常用的用法:

•jmap [pid]
•jmap -histo:live [pid] >a.log
•jmap -dump:live,format=b,file=xxx.xxx [pid]

用得最多是后面两个。其中,jmap -histo:live [pid] 可以查看当前Java进程创建的活跃对象数目和占用内存大小。

jmap -dump:live,format=b,file=xxx.xxx [pid] 则可以将当前Java进程的内存占用情况导出来,方便用专门的内存分析工具(例如:MAT)来分析。

jmap -histo:live 13428 | head -n 20

也可以用:

最後將得到的文件使用MAT來分析

jmap -dump:live,format=b,file=13428.txt 13428

转载于:https://my.oschina.net/ambari/blog/610623

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值