日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

作者:Hollis
來(lái)源:公眾號(hào)JAVA之道

國(guó)外開(kāi)發(fā)者平臺(tái) HankerRank 發(fā)布的 2018 年開(kāi)發(fā)者技能調(diào)查報(bào)告中有一項(xiàng)關(guān)于"雇主最看重哪些核心能力"的調(diào)查,結(jié)果顯示如下:

面試官:線上服務(wù)器CPU占用率高如何排查定位問(wèn)題?

 

 

排名前幾的比較受重視的能力分別為:解決問(wèn)題、編程語(yǔ)言熟練程度、Debug、系統(tǒng)設(shè)計(jì)和性能優(yōu)化。

解決問(wèn)題的能力以超高比例排名第一,這也是為什么很多面試過(guò)程中,面試官都喜歡問(wèn)如下問(wèn)題:

1、你這個(gè)項(xiàng)目遇到的最大挑戰(zhàn)是什么?如何解決的? 
2、如果線上發(fā)生了報(bào)警你回如何排查呢? 
3、你有解決過(guò)什么線上問(wèn)題嗎? 
4、能列舉幾個(gè)你知道的排查linux服務(wù)器線上問(wèn)題的命令嗎?

這些,都是比較常見(jiàn)的問(wèn)題,還有一些比較具體的問(wèn)題也是建議很多開(kāi)發(fā)者都需要掌握的,如:

1、線上服務(wù)器Load飆高如何排查? 
2、線上服務(wù)器CPU占用率高如何排查? 
3、線上服務(wù)器頻繁發(fā)生Full GC如何排查? 
4、線上服務(wù)器發(fā)生死鎖如何排查?

這些問(wèn)題的回答,一方面考察了面試者是否具有很強(qiáng)的實(shí)戰(zhàn)經(jīng)驗(yàn),另外一方面也能體現(xiàn)出其解決問(wèn)題的能力。

毋庸置疑,作為開(kāi)發(fā)人員來(lái)說(shuō),定位并解決問(wèn)題的能力是至關(guān)重要的。因?yàn)橐坏┚€上發(fā)生了問(wèn)題,如CPU占用率高,如果不及時(shí)解決,很容易導(dǎo)致網(wǎng)站響應(yīng)慢、服務(wù)器宕機(jī)等問(wèn)題。

那么,書(shū)歸正傳,本文我們就來(lái)簡(jiǎn)單介紹一下,如果線上服務(wù)器發(fā)生CPU占用率過(guò)高的問(wèn)題時(shí),應(yīng)該如何排查并定位問(wèn)題。

1

 

問(wèn)題發(fā)現(xiàn)

本文整理自一個(gè)真實(shí)的案例,是樓主負(fù)責(zé)的業(yè)務(wù),在一次大促之前的壓測(cè)時(shí)發(fā)現(xiàn)了這個(gè)問(wèn)題。

在每次大促之前,我們的測(cè)試人員都會(huì)對(duì)網(wǎng)站進(jìn)行壓力測(cè)試,這個(gè)時(shí)候會(huì)查看服務(wù)的cpu、內(nèi)存、load、rt、qps等指標(biāo)。

在一次壓測(cè)過(guò)程中,測(cè)試人員發(fā)現(xiàn)我們的某一個(gè)接口,在qps上升到500以后,CPU使用率急劇升高。

CPU利用率,又稱(chēng)CPU使用率。顧名思義,CPU利用率是來(lái)描述CPU的使用情況的,表明了一段時(shí)間內(nèi)CPU被占用的情況。使用率越高,說(shuō)明你的機(jī)器在這個(gè)時(shí)間上運(yùn)行了很多程序,反之較少。

2

 

問(wèn)題定位

遇到這種問(wèn)題,首先是登錄到服務(wù)器,看一下具體情況。

定位進(jìn)程

登錄服務(wù)器,執(zhí)行top命令,查看CPU占用情況:

面試官:線上服務(wù)器CPU占用率高如何排查定位問(wèn)題?

 

top命令是Linux下常用的性能分析工具,能夠?qū)崟r(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況,類(lèi)似于windows的任務(wù)管理器。

通過(guò)以上命令,我們可以看到,進(jìn)程ID為1893的Java進(jìn)程的CPU占用率達(dá)到了181%,基本可以定位到是我們的Java應(yīng)用導(dǎo)致整個(gè)服務(wù)器的CPU占用率飆升。

定位線程

我們知道,Java是單進(jìn)程多線程的,那么,我們接下來(lái)看看PID=1893的這個(gè)Java進(jìn)程中的各個(gè)線程的CPU使用情況,同樣是用top命令:

面試官:線上服務(wù)器CPU占用率高如何排查定位問(wèn)題?

 

通過(guò)top -Hp 1893命令,我們可以發(fā)現(xiàn),當(dāng)前1893這個(gè)進(jìn)程中,ID為4519的線程占用CPU最高。

定位代碼

通過(guò)top命令,我們目前已經(jīng)定位到導(dǎo)致CPU使用率較高的具體線程, 那么我么接下來(lái)就定位下到底是哪一行代碼存在問(wèn)題。

首先,我們需要把4519這個(gè)線程轉(zhuǎn)成16進(jìn)制:

$printf %x 4519
11a7

接下來(lái),通過(guò)jstack命令,查看棧信息:

面試官:線上服務(wù)器CPU占用率高如何排查定位問(wèn)題?

 

通過(guò)以上代碼,我們可以清楚的看到,BeanValidator.java的第30行是有可能存在問(wèn)題的。

3

問(wèn)題解決

接下來(lái)就是通過(guò)查看代碼來(lái)解決問(wèn)題了,我們發(fā)現(xiàn),我們自定義了一個(gè)BeanValidator,封裝了Hibernate的Validator,然后在validate方法中,通過(guò)Validation.buildDefaultValidatorFactory().getValidator()初始化一個(gè)Validator實(shí)例,通過(guò)分析發(fā)現(xiàn)這個(gè)實(shí)例化的過(guò)程比較耗時(shí)。

我們重構(gòu)了一下代碼,把Validator實(shí)例的初始化提到方法外,在類(lèi)初始化的時(shí)候創(chuàng)建一次就解決了問(wèn)題。

4

總結(jié)

以上,展示了一次比較完成的線上問(wèn)題定位過(guò)程。主要用到的命令有:top 、printf 和 jstack

另外,線上問(wèn)題排查還可以使用Alibaba開(kāi)源的工具Arthas進(jìn)行排查,以上問(wèn)題,可以使用一下命令定位:

thread -n 3 //查看cpu占比前三的線程

 

以上,本文介紹了如何排查線上服務(wù)器CPU使用率過(guò)高的問(wèn)題,如果大家感興趣,后面可以再介紹一些關(guān)于LOAD飆高、頻繁GC等問(wèn)題的排查手段。

關(guān)于本次問(wèn)題排查,你有什么想說(shuō)的呢?歡迎交流。

分享到:
標(biāo)簽:率高 占用 CPU
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定