日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java排查一個線上死循環cpu暴漲的過程分析

瀏覽:24日期:2022-08-26 09:18:33

問題,打一個頁面cpu暴漲,打開一次就漲100%,一會系統就卡的不行了。

排查方法,因為是線上的linux,沒有用jvm監控工具rim鏈接上去。

只好用命令排查:

top cpu排序,一個java進程cpu到500%了,什么鬼.....

查到對應java進程

jps || ps -aux | grep 端口

pid=13455

查看進程中線程使用情況 T排序 查看cpu占用time最高的線程編號

top -Hp 13455

有個線程9877 的時間一直在爆漲

獲取線程十六進制地址9877 (十六進制一定要小寫)

printf '%xn' 9877

執行 jstack 13455|grep -10 2695(線程十六進制號)

如果想查看完整信息,可導出文本,查找

jstack -l 9839 > jstack.log-9893

'qtp750044075-25' #25 prio=5 os_prio=0 tid=0x00007f83354e5000 nid=0x2695 runnable [0x00007f830e5d8000] java.lang.Thread.State: RUNNABLEat java.text.DateFormatSymbols.<init>(DateFormatSymbols.java:145)at sun.util.locale.provider.DateFormatSymbolsProviderImpl.getInstance(DateFormatSymbolsProviderImpl.java:85)at java.text.DateFormatSymbols.getProviderInstance(DateFormatSymbols.java:364)at java.text.DateFormatSymbols.getInstance(DateFormatSymbols.java:340)at java.util.Calendar.getDisplayName(Calendar.java:2110)at java.text.SimpleDateFormat.subFormat(SimpleDateFormat.java:1125)at java.text.SimpleDateFormat.format(SimpleDateFormat.java:966)at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936)at java.text.DateFormat.format(DateFormat.java:345)at com.huiwan.gdata.modules.gdata.util.TimeUtil.getDay(TimeUtil.java:383)at com.huiwan.gdata.modules.gdata.publ.retain.service.impl.Retain3ServiceImpl.act(Retain3ServiceImpl.java:119)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) .......略 Locked ownable synchronizers:- None

java排查一個線上死循環cpu暴漲的過程分析

定住到

Retain3ServiceImpl.java:119

這行,馬的,有人寫了個while循環,用字符串時間比較,之前表是date類型,后改為datetime類型,多了00:00:00永遠也沒一樣的時間,一直在那while.....還搞了個json對象默認加0......

改了這里的代碼,就好了,cpu就沒上去了.

補充知識:記一次線上Java程序導致服務器CPU占用率過高的問題排除過程

1、故障現象

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

2、CPU占用過高問題定位

2.1、定位問題進程

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

[ylp@ylp-web-01 ~]$ toptop - 14:51:10 up 233 days, 11:40, 7 users, load average: 6.85, 5.62, 3.97Tasks: 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 stKiB Mem : 16268652 total, 5114392 free, 6907028 used, 4247232 buff/cacheKiB Swap: 4063228 total, 3989708 free, 73520 used. 8751512 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND14063 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,timeUSER %CPU PRI SCNT WCHAN USER SYSTEM TID TIMEylp 361 - - - - - - 02:05:58ylp 0.0 19 - futex_ - - 14063 00:00:00ylp 0.0 19 - poll_s - - 14064 00:00:00ylp 44.5 19 - - - - 14065 00:15:30ylp 44.5 19 - - - - 14066 00:15:30ylp 44.4 19 - - - - 14067 00:15:29ylp 44.5 19 - - - - 14068 00:15:30ylp 44.5 19 - - - - 14069 00:15:30ylp 44.5 19 - - - - 14070 00:15:30ylp 44.5 19 - - - - 14071 00:15:30ylp 44.6 19 - - - - 14072 00:15:32ylp 2.2 19 - futex_ - - 14073 00:00:46ylp 0.0 19 - futex_ - - 14074 00:00:00ylp 0.0 19 - futex_ - - 14075 00:00:00ylp 0.0 19 - futex_ - - 14076 00:00:00ylp 0.7 19 - futex_ - - 14077 00:00:15

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

2.3、查看問題線程堆棧

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

[ylp@ylp-web-01 ~]$ printf '%xn' 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 10 S0 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.747 0.00 0.00 100.00 99.99 26.31 42 21.917 218 1484.830 1506.747 0.00 0.00 100.00 99.99 26.31 42 21.917 219 1496.567 1518.484 0.00 0.00 100.00 99.99 26.31 42 21.917 219 1496.567 1518.484 0.00 0.00 100.00 99.99 26.31 42 21.917 219 1496.567 1518.484 0.00 0.00 100.00 99.99 26.31 42 21.917 219 1496.567 1518.484 0.00 0.00 100.00 99.99 26.31 42 21.917 219 1496.567 1518.484 0.00 0.00 100.00 99.99 26.31 42 21.917 220 1505.439 1527.355 0.00 0.00 100.00 99.99 26.31 42 21.917 220 1505.439 1527.355 0.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、分析堆棧

使用jstack命令查看進程的堆棧情況

[ylp@ylp-web-01 ~]$ jstack 14063 >>jstack.out

把jstack.out文件從服務器拿到本地后,用編輯器查找帶有項目目錄并且線程狀態是RUNABLE的相關信息,從圖中可以看出ActivityUtil.java類的447行正在使用HashMap.put()方法

java排查一個線上死循環cpu暴漲的過程分析

3.3、代碼定位

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

java排查一個線上死循環cpu暴漲的過程分析

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

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

java排查一個線上死循環cpu暴漲的過程分析

至此,問題定位完畢。

以上這篇java排查一個線上死循環cpu暴漲的過程分析就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
图片区亚洲欧美小说区| 秋霞国产精品| 日韩午夜电影| 午夜精品亚洲| 亚洲一区亚洲| 日韩影院在线观看| 婷婷成人av| 欧美啪啪一区| 日韩av一二三| 老司机免费视频一区二区| 精品视频高潮| 日韩不卡在线| 在线亚洲观看| 香蕉久久一区| 欧美精品97| 日韩1区2区| 国产精品99一区二区三区| 日韩欧美一区二区三区免费观看| 国产字幕视频一区二区| 99xxxx成人网| 色综合视频一区二区三区日韩| 国产亚洲久久| 国产精品国产三级国产在线观看| 久久精品国产www456c0m| 国产视频亚洲| 国产日韩视频在线| 天堂av在线| 视频一区视频二区在线观看| 18国产精品| 超碰成人av| 亚洲欧美不卡| 国产一区二区精品| 国产午夜久久av| 麻豆网站免费在线观看| 美女毛片一区二区三区四区| 蜜桃视频一区二区三区在线观看| 国产欧美日韩精品一区二区免费 | 成人午夜亚洲| 欧美特黄一级| 久久女人天堂| 最新日韩av| 六月丁香综合在线视频| 99在线观看免费视频精品观看| 欧美在线看片| 日韩国产一区二区| 视频一区中文字幕精品| 一本大道色婷婷在线| 日韩精品欧美大片| 天堂资源在线亚洲| 国产精成人品2018| 蜜臀av在线播放一区二区三区| 麻豆免费精品视频| 美女网站久久| 97精品视频在线看| 日本一区二区三区视频在线看| 精品久久91| 亚洲精品综合| 久久精品成人| 国产欧美三级| 国产毛片久久| 亚洲一二av| 婷婷精品在线观看| 国产乱人伦精品一区| 国产欧美日韩精品高清二区综合区| 日本欧美不卡| 麻豆一区二区99久久久久| 亚洲一区二区日韩| 欧美激情91| 久久99青青| 亚洲精品1区2区| 精品美女久久| 日韩高清国产一区在线| 亚洲午夜精品久久久久久app| 国产伦一区二区三区| 国产偷自视频区视频一区二区| 欧美精品97| 日韩精品一级| 三级欧美在线一区| 免费国产自久久久久三四区久久 | 国产精品入口久久| 日本大胆欧美人术艺术动态| 亚洲国产影院| 九色porny丨国产首页在线| 久久中文在线| 免费一级欧美片在线观看网站| 天堂va欧美ⅴa亚洲va一国产| av在线日韩| 伊人久久国产| 国产精品99一区二区三| 国产成人精品一区二区三区在线| 国产精品男女| 国产精品videosex极品| 国产精品一区二区三区美女| 欧美亚洲免费| 国产美女久久| 国产精品日本一区二区不卡视频| 日韩一区二区三区四区五区| 亚洲三级毛片| 午夜久久av| 日韩久久99| 日韩精品高清不卡| 在线精品亚洲| 亚洲精品高潮| 91精品国产自产观看在线 | 亚洲精品一区二区在线看| www成人在线视频| 久久久久91| 欧洲毛片在线视频免费观看| 不卡在线一区二区| 亚洲欧美日韩国产一区| 视频一区二区三区入口| 亚洲男人在线| 国产探花一区| 狠狠久久伊人中文字幕| 色在线中文字幕| 在线天堂中文资源最新版| 秋霞国产精品| 美女黄网久久| 国产精品一区三区在线观看| 久久99青青| 日本精品在线中文字幕| 九色精品91| 亚久久调教视频| 久久激情综合网| 精品视频久久| 免费毛片在线不卡| 亚洲毛片视频| 久久一区精品| 欧美午夜精品一区二区三区电影| 亚洲女人av| 欧美一区二区三区久久| 日韩av自拍| 在线一区欧美| 国产日韩亚洲欧美精品| 免费高潮视频95在线观看网站| 99pao成人国产永久免费视频| 日本国产欧美| 日韩综合一区| 亚洲在线免费| 国产劲爆久久| 美女毛片一区二区三区四区| 日韩国产欧美在线视频| 成人在线丰满少妇av| 亚洲欧美日本日韩| 久草精品视频| 欧美日中文字幕| 国产情侣一区| 欧美亚洲国产激情| 国产日韩高清一区二区三区在线| 日韩欧美少妇| 欧美日韩在线精品一区二区三区激情综合 | 欧美色综合网| 日韩精品水蜜桃| 综合视频一区| 成人在线免费观看91| 性色一区二区| 国产成人精品福利| 婷婷亚洲成人| 天堂网av成人| 欧美国产极品| 在线精品国产亚洲| 免费福利视频一区二区三区| 日韩精品一区二区三区中文| 久久精品官网| 欧美精品导航| 亚洲字幕久久| 激情欧美亚洲| 成人午夜亚洲| 欧美日韩亚洲国产精品| 欧美成人基地| 久久av偷拍| 日韩精品三级| 香蕉久久夜色精品国产| 中文字幕在线视频网站| 日韩高清一区| 国产亚洲毛片| 欧美日韩在线播放视频| 欧美国产视频| 青草久久视频| 男女男精品网站| 精品一区免费| 亚洲精品**中文毛片| 国产精品综合| 日韩在线观看一区二区三区| 四虎4545www国产精品| 久久精品国内一区二区三区| 日本欧美久久久久免费播放网| 一区福利视频| 99久久久国产精品美女| 国产aⅴ精品一区二区三区久久| 日韩精品视频一区二区三区| 国产午夜久久| 图片区亚洲欧美小说区| 亚洲精品.com| 日韩国产一区二区| sm久久捆绑调教精品一区| 国产精品亚洲片在线播放| 色综合视频一区二区三区日韩| 亚洲在线电影| 亚洲激情二区|