java cpu 占用高问题定位
解決過程:
1,根據top命令,發現PID為7137的Java進程占用CPU高達200%,出現故障。
2,找到該進程后,如何定位具體線程或代碼呢,首先顯示線程列表,并按照CPU占用高的線程排序:
顯示結果如下:
[app100657741@qxtx-s20-246 ~]$ ps -mp 7137 -o THREAD,tid,time ?
USER ? ? %CPU PRI SCNT WCHAN ?USER SYSTEM ? TID ? ? TIME
25438 ? ?14.2 ? - ? ?- - ? ? ? ? - ? ? ?- ? ? - 00:02:23
25438 ? ? 0.0 ?19 ? ?- futex_ ? ?- ? ? ?- ?7137 00:00:00
25438 ? ? 3.4 ?19 ? ?- futex_ ? ?- ? ? ?- ?7138 00:00:34
或者
[app100657741@qxtx-s20-246 ~]$ top -H -p 7137
top - 13:24:41 up 17 min, ? users, ?load average: 0.15, 0.17, 0.10
Tasks: ?68 total, ? 0 running, ?68 sleeping, ? 0 stopped, ? 0 zombie
Cpu(s): ?6.4%us, ?0.8%sy, ?0.0%ni, 91.2%id, ?0.4%wa, ?0.0%hi, ?0.0%si, ?1.2%st
Mem: ? 4051060k total, ?2523676k used, ?1527384k free, ? ? 7060k buffers
Swap: ?2097144k total, ? ? ? ?0k used, ?2097144k free, ? 145776k cached
?PID USER ? ? ?PR ?NI ?VIRT ?RES ?SHR S %CPU %MEM ? ?TIME+ ?COMMAND ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
7220 app10065 ?20 ? 0 4780m 2.0g ?12m S ?2.0 52.1 ? 0:05.53 java ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
7224 app10065 ?20 ? 0 4780m 2.0g ?12m S ?2.0 52.1 ? 0:05.24 java ? ? ?
找到了耗時最高的線程,占用CPU最大的!
將需要的線程ID轉換為16進制格式:
[root@localhost logs]# printf "%x\n" 7220
1c34
最后打印線程的堆棧信息:
[root@localhost logs]# jstack 2633 |grep 1c34 -A 30
轉載于:https://blog.51cto.com/dingmh/1357980
總結
以上是生活随笔為你收集整理的java cpu 占用高问题定位的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gbk编码的简介以及针对gbk文本飘红截
- 下一篇: flashback_transactio