一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java應用cpu占用過高問題分析及解決方法

java應用cpu占用過高問題分析及解決方法

2021-01-13 14:45流子 Java教程

這篇文章主要介紹了java應用cpu占用過高問題分析及解決方法,具有一定參考價值,需要的朋友可以參考下。

使用jstack分析java程序cpu占用率過高的問題

1,使用jps查找出java進程的pid,如3707

2,使用top -p 14292 -H觀察該進程中所有線程的CPU占用。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[root@cp01-game-dudai-0100.cp01.baidu.com ~]# top -p 14292 -H
top - 22:14:13 up 33 days, 7:29, 4 users, load average: 25.68, 32.11, 33.76
Tasks: 113 total,  2 running, 111 sleeping,  0 stopped,  0 zombie
Cpu(s): 68.3%us, 6.3%sy, 0.0%ni, 20.2%id, 0.1%wa, 0.2%hi, 4.9%si, 0.0%st
Mem: 65965312k total, 65451232k used,  514080k free,  82164k buffers
Swap:  975864k total,  972052k used,   3812k free, 9714400k cached
 PID USER   PR NI VIRT RES SHR S %CPU %MEM  TIME+ COMMAND                                                                                    
15844 root   15  0 6889m 5.7g 4864 S 20.6 9.1 814:13.29 java                                                                                     
15848 root   15  0 6889m 5.7g 4864 S 13.0 9.1 460:25.17 java                                                                                     
15611 root   15  0 6889m 5.7g 4864 S 12.7 9.1 468:17.77 java                                                                                     
15613 root   15  0 6889m 5.7g 4864 S 11.7 9.1 479:40.45 java                                                                                     
15743 root   15  0 6889m 5.7g 4864 S 11.7 9.1 443:04.80 java                                                                                     
15612 root   15  0 6889m 5.7g 4864 S 11.0 9.1 453:43.68 java                                                                                     
15965 root   15  0 6889m 5.7g 4864 S 10.3 9.1 371:00.33 java                                                                                     
15490 root   15  0 6889m 5.7g 4864 S 7.7 9.1 255:32.74 java                                                                                     
15587 root   15  0 6889m 5.7g 4864 S 7.3 9.1 282:27.58 java                                                                                     
15590 root   15  0 6889m 5.7g 4864 S 7.3 9.1 205:48.37 java                                                                                     
15491 root   15  0 6889m 5.7g 4864 R 6.3 9.1 279:09.08 java                                                                                     
15689 root   15  0 6889m 5.7g 4864 S 5.7 9.1 251:42.36 java                                                                                     
16935 root   15  0 6889m 5.7g 4864 S 5.7 9.1 190:34.37 java                                                                                     
15665 root   15  0 6889m 5.7g 4864 S 5.3 9.1 250:07.34 java                                                                                     
16920 root   15  0 6889m 5.7g 4864 S 5.3 9.1 241:34.50 java                                                                                     
15671 root   15  0 6889m 5.7g 4864 S 5.0 9.1 239:49.97 java                                                                                     
15492 root   15  0 6889m 5.7g 4864 S 4.7 9.1 210:23.09 java                                                                                     
14322 root   16  0 6889m 5.7g 4864 S 4.3 9.1 107:39.61 java                                                                                     
14316 root   16  0 6889m 5.7g 4864 S 4.0 9.1 107:18.43 java                                                                                     
14317 root   16  0 6889m 5.7g 4864 S 4.0 9.1 107:29.13 java                                                                                     
15591 root   15  0 6889m 5.7g 4864 S 4.0 9.1 114:34.90 java                                                                                     
14313 root   16  0 6889m 5.7g 4864 S 3.7 9.1 107:12.70 java                                                                                     
14314 root   15  0 6889m 5.7g 4864 S 3.7 9.1 107:28.05 java                                                                                     
14319 root   16  0 6889m 5.7g 4864 S 3.7 9.1 107:27.43 java                                                                                     
14321 root   15  0 6889m 5.7g 4864 S 3.3 9.1 108:01.12 java                                                                                     
15589 root   15  0 6889m 5.7g 4864 R 3.0 9.1 109:01.91 java                                                                                     
15615 root   15  0 6889m 5.7g 4864 S 3.0 9.1 114:55.29 java                                                                                     
16808 root   15  0 6889m 5.7g 4864 S 2.7 9.1 279:05.03 java                                                                                     
14315 root   15  0 6889m 5.7g 4864 S 2.0 9.1 107:45.00 java                                                                                     
14320 root   15  0 6889m 5.7g 4864 S 2.0 9.1 107:48.30 java                                                                                     
15489 root   15  0 6889m 5.7g 4864 S 1.7 9.1 57:38.46 java                                                                                     
15670 root   15  0 6889m 5.7g 4864 S 1.3 9.1  5:55.43 java                                                                                     
14318 root   15  0 6889m 5.7g 4864 S 0.7 9.1 107:45.88 java                                                                                     
14826 root   15  0 6889m 5.7g 4864 S 0.7 9.1 25:07.64 java

 

3,找出CPU消耗較多的線程id,如15844,將15844轉換為16進制0x3de4,注意是小寫哦

4,使用jstack 14292|grep -A 10 0x3de4來查詢出具體的線程狀態。

?
1
2
3
4
5
6
7
8
9
10
11
[root@cp01-game-dudai-0100.cp01.baidu.com ~]# jstack 14292|grep -A 10 0x3de4
"pool-52-thread-1" prio=10 tid=0x000000005a08e000 nid=0x3de4 waiting on condition [0x00002ae63d917000]
  java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for <0x00000006f9a0a110> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
    at java.lang.Thread.run(Thread.java:662)

通過這些線程狀態便可基本定位問題之所在。

解決辦法:

方法1

1.jps 獲取Java進程的PID。

2.jstack pid >> java.txt 導出CPU占用高進程的線程棧。

3.top -H -p PID 查看對應進程的哪個線程占用CPU過高。

4.echo “obase=16; PID” | bc 將線程的PID轉換為16進制,大寫轉換為小寫。

5.在第二步導出的Java.txt中查找轉換成為16進制的線程PID。找到對應的線程棧。

6.分析負載高的線程棧都是什么業務操作。優化程序并處理問題。

方法2

1.使用top 定位到占用CPU高的進程PID

top

通過ps aux | grep PID命令

2.獲取線程信息,并找到占用CPU高的線程

ps -mp pid -o THREAD,tid,time | sort -rn

3.將需要的線程ID轉換為16進制格式

printf "%x\n" tid

4.打印線程的堆棧信息

jstack pid |grep tid -A 30

總結

以上就是本文關于java應用cpu占用過高問題分析及解決方法的全部內容,希望對大家有所幫助,如果有什么疑問,可以隨時留言,小編會及時回復大家的。感謝朋友們對服務器之家網站的支持。

原文鏈接:http://blog.csdn.net/jiangguilong2000/article/details/17971247

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美视频久久 | 婷婷在线成人免费观看搜索 | 4444亚洲国产成人精品 | 久久久GOGO无码啪啪艺术 | 国产精品久久久久aaaa | 欧美一区二区三区免费高 | 99久久国产综合精品麻豆 | 亚洲色图网址 | 亚洲人成网站在线观看播放青青 | 国产成人亚洲影视在线 | 黑人巨鞭大战白妞10级 | 91久久国产露脸精品 | 黑帮少爷爱上我第8集最新 荷兰精品女人性hd 和日本免费不卡在线v | 我的男友是消防员在线观看 | 婷婷中文 | 99手机在线视频 | 亚洲日本久久一区二区va | 国产亚洲精品久久yy5099 | 国产成人咱精品视频免费网站 | 97热久久免费频精品99国产成人 | 花房乱爱在线观看 | 99热这里有精品 | 亚洲小视频在线 | 91久久碰国产 | 男同桌扒开女同桌胸罩喝奶 | 免费看日本 | 亚洲精品久久麻豆蜜桃 | 欧美亚洲一区二区三区在线 | 国产伊人久久 | 欧美多gayxxxx | 歪歪动漫小说sss | 亚洲人成绝费网站色ww | 丁香六月色 | 成人免费体验区福利云点播 | 亚洲 日韩 国产 中文视频 | 特级一级全黄毛片免费 | 天堂va亚洲va欧美va国产 | 亚洲第一男人网站 | 国产精品极品美女自在线 | 日韩国产成人精品视频 | 国内激情自拍 |