`

jvm调优

 
阅读更多
top -Hp pid

printf "%x\n" 21742  找到耗时最长的进程

jstack pid | grep 54ee  定位某个类的方法

jstack 10535|grep -A 10 2a1d (最后十行)

jmap 查询pid 内存线程

附:TOP命令中需要关注的值:
(1)load average:此值反映了任务队列的平均长度;如果此值超过了CPU数量,则表示当前CPU数量不足以处理任务,负载过高
(2)%us:用户CPU时间百分比;如果此值过高,可能是代码中存在死循环、或是频繁GC等
(3)%sy:系统CPU时间百分比;如果此值过高,可能是系统线程竞争激烈,上下文切换过多,应当减少线程数
(4)%wa:等待输入、输出CPU时间百分比;如果此值过高,说明系统IO速度过慢,CPU大部分时间都在等待IO完成
(5)%hi:硬件中断CPU百分比;当硬件中断发生时,CPU会优先去处理硬件中断;比如,网卡接收数据会产生硬件中断
(6)swap used:被使用的swap;此值过高代表系统因为内存不足在进行频繁的换入、换出操作,这样会影响效率,应增大内存量
(7)%CPU:进程使用CPU的百分比;此值高表示CPU在进行无阻塞运算等

"consumer_pt_parser_realtime_001_jmq318_1464086436552" daemon prio=10 tid=0x00007fa4a0009000 nid=0x2a1d runnable [0x00007fa568fac000]
   java.lang.Thread.State: RUNNABLE
        at java.util.Arrays.copyOfRange(Arrays.java:2694)
        at java.lang.String.<init>(String.java:203)
        at java.lang.String.substring(String.java:1913)
        at com.jdjr.crawler.clean.parser.defaultparser.DefaultParserFactory.countBiaoShi(DefaultParserFactory.java:276)
        at com.jdjr.crawler.clean.parser.defaultparser.DefaultParserFactory.getReContent(DefaultParserFactory.java:194)
        at com.jdjr.crawler.clean.parser.defaultparser.DefaultParserFactory.parseAriticle(DefaultParserFactory.java:57)
        at com.jdjr.crawler.clean.parser.control.ParserMessageListener.consume(ParserMessageListener.java:115)
        at com.jdjr
.crawler.clean.parser.control.ParserMessageListener.onMessage(ParserMessageListener.java:71)
        at com.jd.jmq.client.consumer.TopicConsumer$1.call(TopicConsumer.java:767)



注:

1,根据top命令,发现PID为2633的Java进程占用CPU高达300%,出现故障。

2,找到该进程后,如何定位具体线程或代码呢,首先显示线程列表,并按照CPU占用高的线程排序:
[root@localhost logs]# ps -mp 2633 -o THREAD,tid,time | sort -rn

显示结果如下:
USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
root     10.5  19    - -         -      -  3626 00:12:48
root     10.1  19    - -         -      -  3593 00:12:16

找到了耗时最高的线程3626,占用CPU时间有12分钟了!

将需要的线程ID转换为16进制格式:
[root@localhost logs]# printf "%x\n" 3626
e18

最后打印线程的堆栈信息:
[root@localhost logs]# jstack 2633 |grep e18 -A 30


查看死锁
jstack -l 7412


-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics