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
分享到:
相关推荐
JVM调优实践 ⼀、JVM调优准备⼯作 1. 机器环境: 机器 CPU 内存 单机 4C 16G 2. 默认启动参数 JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256 -XX:MetaspaceSiz e=128m -XX:MaxMetaspaceSize=320m" JAVA_...
1.1 JVM调优总结-序3 1.2 JVM调优总结(一)-- 一些概念 4 1.3 JVM调优总结(二)-一些概念 7 1.4 JVM调优总结(三)-基本垃圾回收算法 9 1.5 JVM调优总结(四)-垃圾回收面临的问题 12 1.6 JVM调优总结(五)-分代...
JVM调优篇
JVM调优工具命令详解
JVM面试资料。 JVM结构:类加载器,执行引擎,本地方法接口,本地内存结构; 四大垃圾回收算法:复制算法、标记-清除算法、标记-整理算法、分代收集算法 ...JVM调优:命令行指令,设置堆内存大小的参数
JVM调优总结PDF,带原理图,延时如何进行分代垃圾回收
分析常见的JVM调优技术及其相关条件,以及在实战中怎么使用到相关的技术进行调优,比较适合中高级开发进行学习,适合对JVM理解较深的开发学习
JVM调优 调优参数 调优方法 , 调优手段 等.
JVM调优总结 JVM调优总结 JVM调优总结
JVM调优攻略.pdf!
JVM调优总结 -Xms -Xmx -Xmn -Xss JVM调优总结 -Xms -Xmx -Xmn -Xss
网上下载的JVM调优实战, 值得一下
NULL 博文链接:https://lihongchao87.iteye.com/blog/1688576
JVM调优实战
java6 JVM 调优参数大全 -XX
JVM调优总结 -Xms -Xmx -Xmn -Xss
深入虚拟机---JVM调优总结(摘自网上网上大牛分享),主要是详细介绍了gc的收集,觉得不错。
系统和JVM调优,深入浅出,简单实用。 配有视频,资料,代码,可以结合视频自己操作。 足够应付面试场景,非常适合面试突击。
JVM调优,GC算法汇总,面试必问,早点准备,很好的资料!
好东西,jvm 调优的详细介绍,让你瞬间明白,打车大图