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

您的位置:首頁技術(shù)文章
文章詳情頁

java排查一個(gè)線上死循環(huán)cpu暴漲的過程分析

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

問題,打一個(gè)頁面cpu暴漲,打開一次就漲100%,一會(huì)系統(tǒng)就卡的不行了。

排查方法,因?yàn)槭蔷€上的linux,沒有用jvm監(jiān)控工具rim鏈接上去。

只好用命令排查:

top cpu排序,一個(gè)java進(jìn)程cpu到500%了,什么鬼.....

查到對(duì)應(yīng)java進(jìn)程

jps || ps -aux | grep 端口

pid=13455

查看進(jìn)程中線程使用情況 T排序 查看cpu占用time最高的線程編號(hào)

top -Hp 13455

有個(gè)線程9877 的時(shí)間一直在爆漲

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

printf '%xn' 9877

執(zhí)行 jstack 13455|grep -10 2695(線程十六進(jìn)制號(hào))

如果想查看完整信息,可導(dǎo)出文本,查找

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排查一個(gè)線上死循環(huán)cpu暴漲的過程分析

定住到

Retain3ServiceImpl.java:119

這行,馬的,有人寫了個(gè)while循環(huán),用字符串時(shí)間比較,之前表是date類型,后改為datetime類型,多了00:00:00永遠(yuǎn)也沒一樣的時(shí)間,一直在那while.....還搞了個(gè)json對(duì)象默認(rèn)加0......

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

補(bǔ)充知識(shí):記一次線上Java程序?qū)е路?wù)器CPU占用率過高的問題排除過程

1、故障現(xiàn)象

客服同事反饋平臺(tái)系統(tǒng)運(yùn)行緩慢,網(wǎng)頁卡頓嚴(yán)重,多次重啟系統(tǒng)后問題依然存在,使用top命令查看服務(wù)器情況,發(fā)現(xiàn)CPU占用率過高。

2、CPU占用過高問題定位

2.1、定位問題進(jìn)程

使用top命令查看資源占用情況,發(fā)現(xiàn)pid為14063的進(jìn)程占用了大量的CPU資源,CPU占用率高達(dá)776.1%,內(nèi)存占用率也達(dá)到了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命令查看該進(jìn)程的線程情況,發(fā)現(xiàn)該進(jìn)程的多個(gè)線程占用率很高

[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轉(zhuǎn)為16進(jìn)制,使用printf '%xn' tid命令進(jìn)行轉(zhuǎn)換

[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線程。此時(shí)可以基本確定是內(nèi)存不足或內(nèi)存泄露導(dǎo)致gc線程持續(xù)運(yùn)行,導(dǎo)致CPU占用過高。

所以接下來我們要找的內(nèi)存方面的問題

3、內(nèi)存問題定位

3.1、使用jstat -gcutil命令查看進(jìn)程的內(nèi)存情況

[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區(qū)內(nèi)存占用100%,Old區(qū)內(nèi)存占用99.99%,F(xiàn)ull GC的次數(shù)高達(dá)220次,并且頻繁Full GC,F(xiàn)ull GC的持續(xù)時(shí)間也特別長(zhǎng),平均每次Full GC耗時(shí)6.8秒(1505.439/220)。根據(jù)這些信息,基本可以確定是程序代碼上出現(xiàn)了問題,可能存在不合理創(chuàng)建對(duì)象的地方

3.2、分析堆棧

使用jstack命令查看進(jìn)程的堆棧情況

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

把jstack.out文件從服務(wù)器拿到本地后,用編輯器查找?guī)в许?xiàng)目目錄并且線程狀態(tài)是RUNABLE的相關(guān)信息,從圖中可以看出ActivityUtil.java類的447行正在使用HashMap.put()方法

java排查一個(gè)線上死循環(huán)cpu暴漲的過程分析

3.3、代碼定位

打開項(xiàng)目工程,找到ActivityUtil類的477行,代碼如下:

java排查一個(gè)線上死循環(huán)cpu暴漲的過程分析

找到相關(guān)同事了解后,這段代碼會(huì)從數(shù)據(jù)庫中獲取配置,并根據(jù)數(shù)據(jù)庫中remain的值進(jìn)行循環(huán),在循環(huán)中會(huì)一直對(duì)HashMap進(jìn)行put操作。

查詢數(shù)據(jù)庫中的配置,發(fā)現(xiàn)remain的數(shù)量巨大

java排查一個(gè)線上死循環(huán)cpu暴漲的過程分析

至此,問題定位完畢。

以上這篇java排查一個(gè)線上死循環(huán)cpu暴漲的過程分析就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲欧美日韩国产综合精品二区 | 精品国产欧美日韩| 亚洲精品2区| 日韩不卡在线观看日韩不卡视频 | 巨乳诱惑日韩免费av| 色乱码一区二区三区网站| 亚洲精品高潮| 亚洲一区二区三区中文字幕在线观看| 天堂8中文在线最新版在线| 久久久五月天| 国产成人精品三级高清久久91| 成人在线免费观看网站| 久久精品导航| 日韩av电影一区| 国产精品成久久久久| 日韩精品欧美激情一区二区| 国产精久久一区二区| 精品亚洲精品| 精品在线99| 青青在线精品| 日韩欧美精品一区| aⅴ色国产欧美| 青青草国产成人99久久| 欧美国产专区| 日韩精品一区二区三区免费观看| 免费看的黄色欧美网站| 国产精品天天看天天狠| 99成人在线视频| 日韩av资源网| 久久久久国产| 久久国产人妖系列| 国产精品1luya在线播放| 亚洲www免费| 欧美另类中文字幕| 婷婷综合五月| 麻豆久久一区| 亚洲播播91| 国产福利91精品一区二区| 亚洲一区二区日韩| 在线中文字幕播放| 亚洲欧美日韩一区在线观看| 日本一区二区高清不卡| 日本久久精品| 91亚洲国产高清| 尤物网精品视频| 麻豆一区二区99久久久久| 国产毛片久久久| 日韩在线短视频| 日韩高清不卡一区| 国产精品丝袜xxxxxxx| 欧美激情99| 国产亚洲一区在线| 久久久久久久久久久妇女 | 日韩久久一区| 野花国产精品入口| 国产aa精品| 人人精品久久| 日韩电影免费在线观看| 日韩国产欧美一区二区三区| 久久影视一区| 91精品国产福利在线观看麻豆| 麻豆国产91在线播放| 亚洲美女久久精品| 免费久久久久久久久| 91久久黄色| 97精品97| 麻豆精品99| 日韩不卡一区| 亚洲ab电影| 日韩.com| 午夜电影一区| 久久精品国产免费| 日本在线高清| 精品一区二区三区四区五区| 蜜桃精品在线| 日本精品在线中文字幕| 日韩av一区二区在线影视| 久久久精品网| 国产精品久久久久久久久久齐齐| 一本一道久久a久久精品蜜桃| 久久久国产精品网站| 亚洲丝袜啪啪| 免费av一区二区三区四区| 国产在线观看91一区二区三区| 综合激情在线| 欧美日韩在线网站| 国产一区不卡| 国产午夜一区| 亚洲女人av| 日韩国产网站| 美女国产一区二区三区| 日本亚洲欧美天堂免费| 91久久亚洲| 色婷婷久久久| 伊人久久在线| 久久精品欧洲| 国产精品免费不| 日韩精品一级| 亚洲精品一级| 亚洲深深色噜噜狠狠爱网站 | 999久久久国产精品| 国产在线观看91一区二区三区| 亚洲天堂免费| 视频在线在亚洲| 在线 亚洲欧美在线综合一区| 999久久久亚洲| 日韩不卡免费高清视频| 高清一区二区| 国产一区国产二区国产三区| 欧美激情视频一区二区三区免费 | 88xx成人免费观看视频库| 精品视频一区二区三区四区五区| 7m精品国产导航在线| 日日夜夜免费精品| 免费在线观看不卡| 亚洲中午字幕| 日韩影院精彩在线| 热久久国产精品| 在线观看视频免费一区二区三区| 亚洲涩涩av| 日本a级不卡| 国产毛片一区二区三区| 蜜桃精品视频| 蘑菇福利视频一区播放| 9色精品在线| 国产农村妇女精品一区二区| 黄色日韩在线| 夜久久久久久| 免费成人在线观看| 丝袜美腿亚洲一区| 中文字幕成人| 日本a级不卡| 欧美韩一区二区| 日本午夜大片a在线观看| 91精品一区国产高清在线gif| 国产综合亚洲精品一区二| 亚洲精品小说| 亚洲三级毛片| 久久黄色影视| 久久亚洲国产精品尤物| 国产在线视频欧美一区| 丝袜诱惑一区二区| 欧美日韩免费观看一区=区三区| 美女久久一区| 久久婷婷丁香| 亚洲香蕉久久| 国产精品乱战久久久| 成人欧美一区二区三区的电影| 激情久久中文字幕| 亚洲一区二区免费在线观看| 欧美精品国产一区| 国产成人精品一区二区三区免费 | 夜久久久久久| 亚洲v天堂v手机在线| 国产精品探花在线观看| 97精品一区二区| 午夜欧美精品| 欧美一区=区三区| 在线手机中文字幕| 国产精品三上| 国产欧美日韩精品一区二区免费| 亚洲综合日本| 国产精品一区二区美女视频免费看 | 中文字幕日本一区| 国产精品夜夜夜| 色网在线免费观看| 天堂va蜜桃一区二区三区| 青草av.久久免费一区| 国产不卡精品| 今天的高清视频免费播放成人| 亚洲区国产区| 国产精品国产三级国产在线观看| 亚洲福利免费| 日韩不卡在线观看日韩不卡视频| 国产suv精品一区二区四区视频| 黄色日韩精品| 嫩呦国产一区二区三区av| 欧美.日韩.国产.一区.二区| 日韩黄色免费网站| 91日韩免费| 蜜臀av性久久久久蜜臀aⅴ流畅 | 亚洲欧美日韩专区| 久久成人高清| 伊人久久成人| 美日韩一区二区三区| 国内精品99| 老色鬼精品视频在线观看播放| 欧美日韩精品免费观看视频完整| 欧美日一区二区三区在线观看国产免| 人在线成免费视频| 日韩**一区毛片| 欧美va天堂| 麻豆成人在线观看| 久久高清一区| 麻豆理论在线观看| 亚洲精品婷婷| 亚洲国产专区| 国产一区调教| 日韩va亚洲va欧美va久久| 在线成人动漫av|