利用jstack分析JAVA应用CPU占用过高的问题
来源:互联网 发布:淘宝app怎么改评价 编辑:程序博客网 时间:2024/04/29 02:40
使用jstack分析java程序cpu占用率过高的有关问题
3,找出CPU消耗较多的线程id,如17262,将17262转换为16进制0x436E。
1,先在linux下用ps -ef | grep java 找出java进程的pid,如14874
ps -ef | grep javaroot 14874 1 6 15:20 ? 00:04:55 ./jdk1.6.0_31/jre/bin/java -Djava.util.logging.config.file=/ucm/apache-tomcat-6.0.28/conf/logging.properties -Xms512m -Xmx8196m -XX:PermSize=64M -XX:MaxPermSize=256m -Djava.awt.headless=true -Duser.timezone=GMT+8-Dclient.encoding.override=UTF-8 -Dfile.encoding=UTF-8 -server -Xms512m -Xmx1600m -XX:MaxPermSize=256m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9005 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8788 -Djava.endorsed.dirs=/ucm/apache-tomcat-6.0.28/endorsed -classpath /ucm/apache-tomcat-6.0.28/bin/bootstrap.jar -Dcatalina.base=/ucm/apache-tomcat-6.0.28 -Dcatalina.home=/ucm/apache-tomcat-6.0.28 -Djava.io.tmpdir=/ucm/apache-tomcat-6.0.28/temp org.apache.catalina.startup.Bootstrap start
2,使用top -p 14874-H观察该进程中所有线程的CPU占用。
[root@UC100C ~]# top -p 14874-Htop - 16:45:53 up 7 days, 23:20, 12 users, load average: 50.85, 42.35, 22.56Tasks: 334 total, 19 running, 315 sleeping, 0 stopped, 0 zombieCpu(s): 80.1%us, 16.1%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 3.9%si, 0.0%stMem: 3889304k total, 3108580k used, 780724k free, 143980k buffersSwap: 4046840k total, 1485836k used, 2561004k free, 356796k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 17262 root 20 0 3511m 1.3g 10m R 2.3 34.2 0:10.07 java 17324 root 20 0 3511m 1.3g 10m S 2.3 34.2 0:10.67 java 17343 root 20 0 3511m 1.3g 10m S 2.3 34.2 0:09.61 java 17361 root 20 0 3511m 1.3g 10m R 2.3 34.2 0:10.34 java 17363 root 20 0 3511m 1.3g 10m S 2.3 34.2 0:10.36 java 17396 root 20 0 3511m 1.3g 10m S 2.3 34.2 0:10.32 java 17407 root 20 0 3511m 1.3g 10m R 2.3 34.2 0:10.03 java 15236 root 20 0 3511m 1.3g 10m R 2.0 34.2 0:09.52 java 15237 root 20 0 3511m 1.3g 10m S 2.0 34.2 0:09.65 java 15238 root 20 0 3511m 1.3g 10m R 2.0 34.2 0:10.90 java 17258 root 20 0 3511m 1.3g 10m S 2.0 34.2 0:09.41 java 17259 root 20 0 3511m 1.3g 10m S 2.0 34.2 0:09.48 java 17260 root 20 0 3511m 1.3g 10m S 2.0 34.2 0:09.43 java 17261 root 20 0 3511m 1.3g 10m S 2.0 34.2 0:09.53 java 17263 root 20 0 3511m 1.3g 10m S 2.0 34.2 0:09.49 java 17326 root 20 0 3511m 1.3g 10m R 2.0 34.2 0:10.00 java 17360 root 20 0 3511m 1.3g 10m S 2.0 34.2 0:11.30 java 17362 root 20 0 3511m 1.3g 10m R 2.0 34.2 0:10.85 java 17364 root 20 0 3511m 1.3g 10m S 2.0 34.2 0:11.38 java 17365 root 20 0 3511m 1.3g 10m R 2.0 34.2 0:09.73 java 17366 root 20 0 3511m 1.3g 10m S 2.0 34.2 0:09.43 java 17381 root 20 0 3511m 1.3g 10m R 2.0 34.2 0:09.45 java
3,找出CPU消耗较多的线程id,如17262,将17262转换为16进制0x436E。
4,有配置java运行环境直接使用jstack14874|grep -A 10 0x436E来查询出具体的线程状态。jstack 14874|grep -A 10 0x436E来查询出具体的线程状态 当然有时候转换没有这么快,可以运行jstack 14874 > test 来将整个内存快照保存起来,然后再打开用0X436E 查询。
"pool-2-thread-10" prio=10 tid=0x00007f9764038800 nid=0x436e runnable [0x00007f973c542000] java.lang.Thread.State: RUNNABLEat java.net.SocketInputStream.socketRead0(Native Method)at java.net.SocketInputStream.read(SocketInputStream.java:129)at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)- locked <0x00000000a19f0fd0> (a com.mysql.jdbc.util.ReadAheadInputStream)
0 0
- 利用jstack分析JAVA应用CPU占用过高的问题
- 【Java】分析JAVA应用CPU占用过高的问题
- 分析JAVA应用CPU占用过高的问题
- 分析JAVA应用CPU占用过高的问题
- 分析JAVA应用CPU占用过高的问题
- 分析JAVA应用CPU占用过高的问题
- 分析JAVA应用CPU占用过高的问题
- 分析JAVA应用CPU占用过高的问题
- 分析JAVA应用CPU占用过高的问题
- 分析JAVA应用CPU占用过高的问题
- 分析JAVA应用CPU占用过高的问题
- 使用jstack分析cpu消耗过高的问题
- 使用jstack分析cpu消耗过高的问题
- 使用jstack分析cpu消耗过高的问题
- 使用jstack分析cpu消耗过高的问题
- 使用jstack分析cpu消耗过高的问题
- 使用jstack分析CPU消耗过高的问题
- 使用jstack分析cpu消耗过高的问题
- CF:Problem 383D - Antimatter 分治DP
- U盘制作
- java类初始化的"惰性"
- 为情所伤
- lnmp安装之后的数据库(phpmyadmin)的安全设置(意见中肯)
- 利用jstack分析JAVA应用CPU占用过高的问题
- 黑苹果显卡div和d-sub的选择
- 三足鼎立,小公司路越来越窄
- ARM NE10开源库的编译和运行
- 谈谈企业网站建设的目的
- 一个让男人们潸然泪下的故事
- Linux下的udp_socket编程
- 浅谈MySQL索引背后的数据结构及算法
- Time