日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
程序員不小心把服務(wù)器CPU打到100%,展示教科書排查過程

 你們沒發(fā)現(xiàn)我最近的原創(chuàng)原創(chuàng)少了很多嘛,一是最近花了很多時間做視頻,本來我寫文章就是利用周末的兩天時間,但是現(xiàn)在基本上兩天都要拍攝剪輯了,盡管請了小伙伴做字幕,還是得耗費大量時間在拍攝和剪輯上。

為順德等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及順德網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為做網(wǎng)站、成都網(wǎng)站設(shè)計、順德網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

所以我只能利用工作日熬一下才能寫出來了,這周因為要發(fā)布,本來是沒排期寫文章的,你們也看到了我發(fā)了兩個視頻嘛。

但是今天我一發(fā)布就嚇尿了….

事情是這樣的…..

我和小組伙伴最近負(fù)責(zé)的系統(tǒng)今天上線了,因為涉及到的業(yè)務(wù)特別多所以選擇白天發(fā)布,怕出問題找不到對應(yīng)的負(fù)責(zé)人。

看到3點25那個full gc沒,我發(fā)布上去一分鐘不到就瘋狂GC,我當(dāng)時就嚇尿了,馬上點了回滾按鈕。

而且我發(fā)現(xiàn)cpu幾乎在我發(fā)布的瞬間,直接打到了峰值。

所幸只發(fā)布了一臺,我緊張的望向了周圍,發(fā)現(xiàn)周圍的同事沒注意到我,我頓時沒那么緊張了,拿起桌上用剩下的紙巾搽掉了我鬢角馬上留下的汗水。

我其實已經(jīng)知道大概是什么問題了,無非就是死循環(huán),或者大對象什么的。

但是我還是想找個人承擔(dān)這個鍋。

[[320935]]

我馬上找到三歪,我問他:你剛才是不是點過我的系統(tǒng)?

他說:對啊,我剛才點了,我本來就經(jīng)常使用你的系統(tǒng),咋了?(剛好正中下懷嘻嘻)

我說過多少次啊,叫你不要亂點,這已經(jīng)不是第一次了,現(xiàn)在把我的系統(tǒng)點壞了,怎么辦?都怪你。

他:委屈巴巴一副要哭的樣子。

[[320936]]

我:誒,算了算了,下次注意哈,我去排查下什么情況,看看你點壞了哪里。

他:丙哥真好,丙哥真棒,丙哥我愛你。

總算是找到背鍋俠了,我就開始排查問題吧。

注:以下代碼都是偽代碼,為了還原排查過程

一般CPU100%瘋狂GC,都是死循環(huán)的鍋,那怎么排查呢?

先進(jìn)服務(wù)器,用top -c 命令找出當(dāng)前進(jìn)程的運行列表

按一下 P 可以按照CPU使用率進(jìn)行排序

顯示Java進(jìn)程 PID 為 2609 的java進(jìn)程消耗最高

然后我們需要根據(jù)PID 查出CPU里面消耗最高的進(jìn)程

使用命令 top -Hp 2609 找出這個進(jìn)程下面的線程,繼續(xù)按P排序

可以看到 2854 CPU消耗最高

2854是十進(jìn)制的,我們需要轉(zhuǎn)換為十六進(jìn)制,轉(zhuǎn)換結(jié)果:b26

接下來就需要導(dǎo)出我們的進(jìn)程快照了,看看這個線程做了啥

 
 
 
 
  1. jstack -l 2609 > ./2609.stack 

再用grep查看一下線程在文件里做了啥

 
 
 
 
  1. cat 2609.stack |grep 'b26' -C 8 

我這里就隨便定位一個,基本上這樣查都可以定位到你死循環(huán)的那個類,那一行,這里你還可以在jstack出來的文件中看到很多熟悉的名詞,至于是啥,你們留言告訴我好了,就當(dāng)是個課后作業(yè)了。

我寫了個偽代碼,看看當(dāng)時我為啥會寫出這個死循環(huán),對了當(dāng)時我上線的是預(yù)發(fā),也是后臺系統(tǒng)非線上的,雖然都是自己在玩,但是大家還是要引以為戒。

我當(dāng)時寫了個代碼準(zhǔn)備去查出數(shù)據(jù)庫的數(shù)據(jù),訂正下日期,仔細(xì)看沒問題,但是我忘了數(shù)據(jù)庫的偏移值自己去計算了,因為以前都是框架,自己臨時寫的就沒管。

導(dǎo)致每次都能查出10個數(shù)據(jù),在最后判斷的時候就一直true不退出了,其實最后會退出,但是得循環(huán)很多次。

我這里退出的邏輯比較取巧,就是想著最后一次查詢肯定跟我的頁數(shù)不一樣,那就是最后一頁了,那我就處理完退出。

結(jié)果沒想到也是個坑了。

大家寫的時候也要注意很多小坑,這次我就給個demo順便帶大家溫習(xí)一下線上故障的排查,下次我可能搞點內(nèi)存泄露,集群宕機什么的故障,這樣就有素材了呀。

如果真出問題,第一時間找個三歪這樣的背鍋俠,排查過程自己去電腦上操作一下,最近有點忙,準(zhǔn)備寫個分布式鎖的文章,如何?

我是敖丙,一個在互聯(lián)網(wǎng)茍且偷生的工具人。


文章題目:程序員不小心把服務(wù)器CPU打到100%,展示教科書排查過程
URL鏈接:http://www.dlmjj.cn/article/ccehhgi.html