日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

记一次线上Java程序导致服务器CPU占用率过高的问题排除过程

發布時間:2023/12/20 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 记一次线上Java程序导致服务器CPU占用率过高的问题排除过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、故障現象

客服同事反饋平臺系統運行緩慢,網頁卡頓嚴重,多次重啟系統后問題依然存在,使用top命令查看服務器情況,發現CPU占用率過高。

2、CPU占用過高問題定位

2.1、定位問題進程

使用top命令查看資源占用情況,發現pid為14063的進程占用了大量的CPU資源,CPU占用率高達776.1%,內存占用率也達到了29.8%

[ylp@ylp-web-01 ~]$ top top - 14:51:10 up 233 days, 11:40, 7 users, load average: 6.85, 5.62, 3.97 Tasks: 192 total, 2 running, 190 sleeping, 0 stopped, 0 zombie %Cpu(s): 97.3 us, 0.3 sy, 0.0 ni, 2.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 16268652 total, 5114392 free, 6907028 used, 4247232 buff/cache KiB Swap: 4063228 total, 3989708 free, 73520 used. 8751512 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 14063 ylp 20 0 9260488 4.627g 11976 S 776.1 29.8 117:41.66 java

2.2、定位問題線程

使用ps -mp pid -o THREAD,tid,time命令查看該進程的線程情況,發現該進程的多個線程占用率很高

[ylp@ylp-web-01 ~]$ ps -mp 14063 -o THREAD,tid,time USER %CPU PRI SCNT WCHAN USER SYSTEM TID TIME ylp 361 - - - - - - 02:05:58 ylp 0.0 19 - futex_ - - 14063 00:00:00 ylp 0.0 19 - poll_s - - 14064 00:00:00 ylp 44.5 19 - - - - 14065 00:15:30 ylp 44.5 19 - - - - 14066 00:15:30 ylp 44.4 19 - - - - 14067 00:15:29 ylp 44.5 19 - - - - 14068 00:15:30 ylp 44.5 19 - - - - 14069 00:15:30 ylp 44.5 19 - - - - 14070 00:15:30 ylp 44.5 19 - - - - 14071 00:15:30 ylp 44.6 19 - - - - 14072 00:15:32 ylp 2.2 19 - futex_ - - 14073 00:00:46 ylp 0.0 19 - futex_ - - 14074 00:00:00 ylp 0.0 19 - futex_ - - 14075 00:00:00 ylp 0.0 19 - futex_ - - 14076 00:00:00 ylp 0.7 19 - futex_ - - 14077 00:00:15

從輸出信息可以看出,14065~14072之間的線程CPU占用率都很高

2.3、查看問題線程堆棧

挑選TID為14065的線程,查看該線程的堆棧情況,先將線程id轉為16進制,使用printf “%x\n” tid命令進行轉換

[ylp@ylp-web-01 ~]$ printf "%x\n" 14065 36f1

再使用jstack命令打印線程堆棧信息,命令格式:jstack pid |grep tid -A 30

[ylp@ylp-web-01 ~]$ jstack 14063 |grep 36f1 -A 30 "GC task thread#0 (ParallelGC)" prio=10 tid=0x00007fa35001e800 nid=0x36f1 runnable "GC task thread#1 (ParallelGC)" prio=10 tid=0x00007fa350020800 nid=0x36f2 runnable "GC task thread#2 (ParallelGC)" prio=10 tid=0x00007fa350022800 nid=0x36f3 runnable "GC task thread#3 (ParallelGC)" prio=10 tid=0x00007fa350024000 nid=0x36f4 runnable "GC task thread#4 (ParallelGC)" prio=10 tid=0x00007fa350026000 nid=0x36f5 runnable "GC task thread#5 (ParallelGC)" prio=10 tid=0x00007fa350028000 nid=0x36f6 runnable "GC task thread#6 (ParallelGC)" prio=10 tid=0x00007fa350029800 nid=0x36f7 runnable "GC task thread#7 (ParallelGC)" prio=10 tid=0x00007fa35002b800 nid=0x36f8 runnable "VM Periodic Task Thread" prio=10 tid=0x00007fa3500a8800 nid=0x3700 waiting on condition JNI global references: 392

從輸出信息可以看出,此線程是JVM的gc線程。此時可以基本確定是內存不足或內存泄露導致gc線程持續運行,導致CPU占用過高。
所以接下來我們要找的內存方面的問題

3、內存問題定位

3.1、使用jstat -gcutil命令查看進程的內存情況

[ylp@ylp-web-01 ~]$ jstat -gcutil 14063 2000 10S0 S1 E O P YGC YGCT FGC FGCT GCT 0.00 0.00 100.00 99.99 26.31 42 21.917 218 1484.830 1506.7470.00 0.00 100.00 99.99 26.31 42 21.917 218 1484.830 1506.7470.00 0.00 100.00 99.99 26.31 42 21.917 219 1496.567 1518.4840.00 0.00 100.00 99.99 26.31 42 21.917 219 1496.567 1518.4840.00 0.00 100.00 99.99 26.31 42 21.917 219 1496.567 1518.4840.00 0.00 100.00 99.99 26.31 42 21.917 219 1496.567 1518.4840.00 0.00 100.00 99.99 26.31 42 21.917 219 1496.567 1518.4840.00 0.00 100.00 99.99 26.31 42 21.917 220 1505.439 1527.3550.00 0.00 100.00 99.99 26.31 42 21.917 220 1505.439 1527.3550.00 0.00 100.00 99.99 26.31 42 21.917 220 1505.439 1527.355```從輸出信息可以看出,Eden區內存占用100%,Old區內存占用99.99%,Full GC的次數高達220次,并且頻繁Full GC,Full GC的持續時間也特別長,平均每次Full GC耗時6.8秒(1505.439/220)。根據這些信息,基本可以確定是程序代碼上出現了問題,可能存在不合理創建對象的地方####3.2、分析堆棧 使用jstat命令查看進程的堆棧情況

[ylp@ylp-web-01 ~]$ jstat 14063 >>jstat.out
“`
把jstat.out文件從服務器拿到本地后,用編輯器查找帶有項目目錄并且線程狀態是RUNABLE的相關信息,從圖中可以看出ActivityUtil.java類的447行正在使用HashMap.put()方法

3.3、代碼定位

打開項目工程,找到ActivityUtil類的477行,代碼如下:

找到相關同事了解后,這段代碼會從數據庫中獲取配置,并根據數據庫中remain的值進行循環,在循環中會一直對HashMap進行put操作。

查詢數據庫中的配置,發現remain的數量巨大

至此,問題定位完畢。

總結

以上是生活随笔為你收集整理的记一次线上Java程序导致服务器CPU占用率过高的问题排除过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日日操日日碰 | 欧美高清视频一区二区 | 99国产精品久久久久久久 | 亚洲精品一区二区三区精华液 | 国产精品天天干 | 夜夜天堂 | av资源网站| 国产一区二区免费电影 | 亚洲九九 | 精品福利视频导航 | 91高跟黑色丝袜呻吟在线观看 | 免费黄色在线播放 | 淫欲av| 爱爱视频天天干 | 麻豆av网站 | 94av视频| 伊人888| 91精品国产高潮对白 | 日韩av高清无码 | 成人午夜免费福利视频 | 26uuu欧美日本 | 免费性爱视频 | 欧美456 | 一级大片免费观看 | 国产aⅴ无码片毛片一级一区2 | 日本超碰在线 | 欧美高h视频| 一区二区三区xxx | 亚洲男女视频在线观看 | 亚洲精品天堂网 | 国产精品视频一 | 国产人妻人伦精品1国产 | 日本a区 | 亚洲精品乱码久久久久久蜜桃91 | av漫画在线观看 | www.成人免费 | 欧美大尺度床戏做爰 | 亚洲一区二区电影 | 爱综合网 | 涩涩av | 成 年 人 黄 色 大 片大 全 | 小视频成人 | 国产成人精品亚洲日本在线观看 | 国产三级三级三级三级三级 | 免费色网址| 国产精品视频无码 | 神马久久网站 | 福利小视频在线 | 色婷婷国产| 免费黄网站在线观看 | 欧美精品在线观看视频 | 波多野42部无码喷潮在线 | 奇米四色在线视频 | 欧美手机在线视频 | 九一亚色 | 人妻视频一区 | 草av| 国内精品福利视频 | 黑人操白妞 | 国产欧美一区二区三区在线老狼 | av黄色免费网站 | 色呦呦在线观看视频 | 校园春色中文字幕 | 国产午夜麻豆影院在线观看 | 亚洲一区二区在线电影 | 久久久噜噜噜久久中文字幕色伊伊 | 婷婷六月综合 | 欧美日韩亚洲另类 | 国产精品久久影院 | 精品99在线观看 | 亚洲国产综合久久 | 岛国av中文字幕 | 欧美日韩一区二区三区在线播放 | 欧美做爰xxxⅹ性欧美大片 | 日韩av三级在线观看 | 国产一级片免费在线观看 | 在线免费观看av网址 | 超碰2019| 欧美精品在欧美一区二区 | 中文字幕一区二区三区av | 中文毛片无遮挡高潮免费 | www.毛片| 亚州综合视频 | 日韩精品久久久久久免费 | 国产精品2020 | 日本精品免费一区二区三区 | 香蕉视频2020 | 干老太太视频 | www亚洲天堂 | 久久精品国产视频 | 亚欧视频在线观看 | 国产一级特黄a高潮片 | 无码人妻一区二区三区精品视频 | 少妇激情偷人爽爽91嫩草 | 99成人在线观看 | 久久免费在线观看 | a国产免费 | 国产精品一区二区三区免费 | 欧美一级不卡 |