導航:首頁 > 編程系統 > linuxgc佔用cpu過高

linuxgc佔用cpu過高

發布時間:2024-05-26 02:50:41

A. linux cpu使用率過高排查

方法一

第一步:使用

top命令,然後按shift+p按照CPU排序

找到佔用CPU過高的進程的pid

第二步:使用

top -H -p [進程id]

找到進程中消耗資源最高的線程的id

第三步:使用

echo 'obase=16;[線程id]' | bc或者printf "%x " [線程id]

將線程id轉換為16進制(字母要小寫)

bc是linux的計算器命令

第四步:執行

jstack [進程id] |grep -A 10 [線程id的16進制]」

查看線程狀態信息

方法二

第一步:使用

top命令,然後按shift+p按照CPU排序

找到佔用CPU過高的進程

第二步:使用

ps -mp pid -o THREAD,tid,time | sort -rn

獲取線程信息,並找到佔用CPU高的線程

第三步:使用

echo 'obase=16;[線程id]' | bc或者printf "%x " [線程id]

將需要的線程ID轉換為16進制格式

第四步:使用

jstack pid |grep tid -A 30 [線程id的16進制]

列印線程的堆棧信息

案例分析

場景描述

生產環境下java進程高CPU佔用故障排查

解決過程

1、根據top命令,發現PID為2633的Java進程佔用CPU高達300%,出現故障。

2、找到該進程後,如何定位具體線程或代碼呢,首先顯示線程列表,並按照CPU佔用高的線程排序:

1

[root@localhost ~]# ps -mp 2633 -o THREAD,tid,time | sort -rn

顯示結果如下:

化主動為被動的方式,一方面減輕了運維工程師的工作,另一方面也減小了運維漏看或者忽略告警的情況發生。

B. cpu浣跨敤鐜囬珮鎬庝箞瑙e喅鏁欎綘姝g『瑙e喅鐢佃剳cpu楂樻俯鎶宸

鏁欎綘姝g『瑙e喅鐢佃剳cpu楂樻俯鎶宸,cpu浣跨敤鐜囬珮鎬庝箞瑙e喅銆

cpu浣跨敤鐜囬珮鎬庝箞瑙e喅

涓虹綉鍙嬩滑瑙g瓟cpu浣跨敤鐜囬珮鎬庝箞瑙e喅鍜屾暀浣犳g『瑙e喅鐢佃剳cpu楂樻俯鎶宸х殑IT灝忕粡楠岋紝涓嬮潰鎴戜負鎮ㄨ︾粏瑙g瓟

鐢佃剳CPU鍗犵敤榪囬珮鍙鑳藉艱嚧緋葷粺鎬ц兘涓嬮檷錛屽獎鍝嶆e父浣跨敤銆傛湰鏁欑▼灝嗕負鎮ㄨ︾粏浠嬬粛澶氱嶆柟娉曪紝浠庤蔣浠朵紭鍖栧埌緋葷粺璋冩暣錛屽府鍔╂偍瑙e喅鐢佃剳CPU鍗犵敤榪囬珮鐨勯棶棰橈紝鎮㈠嶇數鑴戠殑欏虹晠榪愯屻

涓銆佷負浠涔圕PU娓╁害浼氳繃楂橈紵

鐢佃剳CPU鍗犵敤榪囬珮鍙鑳界敱澶氱嶅師鍥犲紩璧鳳紝浣嗛氳繃鏌ユ壘鍗犵敤CPU鐨勮繘紼嬨佸叧闂涓嶅繀瑕佺殑鍚庡彴紼嬪簭銆佹洿鏂拌蔣浠跺拰椹卞姩紼嬪簭錛屼互鍙婅繘琛岀郴緇熻皟鏁村拰紜浠舵鏌ワ紝鎮ㄥ彲浠ヨВ鍐寵繖涓闂棰橈紝鎻愰珮鐢佃剳鎬ц兘錛岀『淇濋『鐣呰繍琛屻傛牴鎹鍏蜂綋鎯呭喌錛岄夋嫨閫傚綋鐨勬柟娉曟潵鎺掓煡鍜岃В鍐抽棶棰橈紝璁╂偍鐨勭數鑴戞仮澶嶅埌鏈浣崇姸鎬併

浜屻佹湁鏁堣В鍐矯PU娓╁害榪囬珮鐨勬柟娉曪細

娓呮磥鐢佃剳鍐呴儴錛

瀹氭湡娓呯悊鐢佃剳鍐呴儴鐨勭伆灝樺拰奼″灑鏄瑙e喅CPU娓╁害榪囬珮鐨勯栬佹ラゃ傞栧厛錛屽叧闂鐢佃剳錛屾柇寮鐢墊簮騫舵嫈涓嬬數婧愮嚎銆傜劧鍚庯紝灝忓績鍦版墦寮鐢佃剳鏈虹憋紝浣跨敤鍘嬬緝絀烘皵鍚規壂鍐呴儴鐏板皹銆傜壒鍒娉ㄦ剰娓呯悊CPU椋庢墖鍜屾暎鐑鍣錛岀『淇濆畠浠娌℃湁鍫靛炪

鏇存崲鏁g儹鑳訛細

鏁g儹鑳舵槸榪炴帴CPU鍜屾暎鐑鍣ㄧ殑鐑瀵間粙璐錛屽畠鏈変竴瀹氱殑浣跨敤瀵垮懡銆傚侰PU娓╁害榪囬珮錛屾湁鍙鑳芥槸鏁g儹鑳跺け鏁堜簡銆傚彲浠ヨ喘涔伴傚悎鑷宸盋PU鐨勬暎鐑鑳訛紝騫舵寜鐓ц存槑榪涜屾洿鎹銆

鎻愬崌鏁g儹鎬ц兘錛

紜淇濈數鑴戠殑鏁g儹緋葷粺鑹濂借繍浣溿傚彲浠ュ畨瑁呮洿澶с佹洿楂樻晥鐨勯庢墖鎴栨按鍐風郴緇熸潵鎻愰珮鏁g儹鎬ц兘銆傛ゅ栵紝浣跨敤鏁g儹鍨鎴栨暎鐑搴曞駭涔熸槸鏈夋晥鐨勬暎鐑澧炲己鏂瑰紡銆

鍚堢悊浣跨敤鐢佃剳錛

1.鎵撳紑浠誨姟綆$悊鍣錛屽彲浠ラ氳繃鎸変笅鈥淐trl + Shift + Esc鈥濈粍鍚堥敭鎴栬呭彸閿鐐瑰嚮浠誨姟鏍忛夋嫨鈥滀換鍔$$悊鍣ㄢ濇潵鎵撳紑銆

2.鍦ㄢ滆繘紼嬧濋夐」鍗′腑錛屾壘鍒板崰鐢–PU杈冮珮鐨勮繘紼嬨

鏁欎綘姝g『瑙e喅鐢佃剳cpu楂樻俯鎶宸,cpu浣跨敤鐜囬珮鎬庝箞瑙e喅銆

cpu浣跨敤鐜囬珮鎬庝箞瑙e喅

鎻愰珮鐜澧冩俯搴︼細

濡傛灉鍛ㄥ洿鐜澧冩俯搴﹁繃楂橈紝浼氬姞閲嶇數鑴戞暎鐑璐熸媴銆傚彲浠ヤ嬌鐢ㄧ┖璋冩垨鐢甸庢墖鏉ラ檷浣庡ゆ俯錛屾湁鍔╀簬鍑忚交CPU鐨勮礋鑽楓

鏇存柊椹卞姩紼嬪簭鍜岀郴緇燂細

鍙婃椂鏇存柊鎿嶄綔緋葷粺鍜岀‖浠墮┍鍔ㄧ▼搴忥紝浠ョ『淇濆叾涓庢渶鏂扮殑浼樺寲鍜屼慨澶嶇浉鍖歸厤錛屼粠鑰岄檷浣嶤PU鍥犺蔣浠墮棶棰樺艱嚧鐨勯珮娓┿

涓嶈秴棰戱細

瓚呴戞槸涓縐嶅皢CPU鎬ц兘鎻愬崌鐨勬柟娉曪紝浣嗕篃浼氬艱嚧鏇撮珮鐨勫姛鑰楀拰娓╁害銆傚傛灉鎮ㄧ殑CPU娓╁害宸茬粡鍋忛珮錛屽緩璁涓嶈佽繘琛岃秴棰戞搷浣溿

緇間笂鎵榪幫紝淇濇寔鐢佃剳CPU娓╁害鍦ㄥ悎鐞嗚寖鍥村唴鏄淇濇姢鐢佃剳鍋ュ悍鐨勫叧閿銆傞氳繃瀹氭湡娓呮磥銆佷紭鍖栨暎鐑銆佸悎鐞嗕嬌鐢ㄧ數鑴戜互鍙婃彁楂樼幆澧冩俯搴︾瓑鏂規硶錛屾偍鍙浠ラ檷浣嶤PU娓╁害錛屽歡闀跨數鑴戝垮懡錛屽苟紜淇濈數鑴戝湪楂樻晥榪愯岀殑鍚屾椂淇濇寔紼沖畾鎬с

涓婅堪灝辨槸cpu浣跨敤鐜囬珮鎬庝箞瑙e喅 浠ュ強 鏁欎綘姝g『瑙e喅鐢佃剳cpu楂樻俯鎶宸х殑鍏ㄩ儴鍐呭癸紝鎮ㄤ簡瑙d簡鍚楋紵

C. linux鐨刢pu璐熻澆榪囬珮linux鐨刢pu璐熻澆

鏈嶅姟鍣–PU璐熻澆榪囬珮錛屽備綍瀹氫綅闂棰橈紵

涓涓搴旂敤鍗犵敤CPU寰堥珮錛岄櫎浜嗙『瀹炴槸璁$畻瀵嗛泦鍨嬪簲鐢ㄤ箣澶栵紝閫氬父鍘熷洜閮芥槸鍑虹幇浜嗘誨驚鐜銆侰PU璐熻澆榪囬珮瑙e喅闂棰樿繃紼嬶細

浣跨敤銆恡op銆戝懡浠ゅ畾浣嶅紓甯歌繘紼嬶紝鍙鍙戠幇12836鐨凜PU鍜屽唴瀛樺崰鐢ㄧ巼閮介潪甯擱珮

澶囨敞錛歵op鍛戒護榛樿ゆ儏鍐典笅錛屾槸姣3縐掑埛鏂頒竴嬈°備篃鍙浠ラ氳繃top-d鍒鋒柊鏃墮棿闂撮殧>鏉ユ寚瀹氬埛鏂伴戠巼錛屽倀op-d0.1鎴杢op-d0.01絳夈倀op鎵ц屾椂錛屼篃鍙浠ユ寜鈥渟鈥濋敭錛屼慨鏀規椂闂撮棿闅斻

浣跨敤銆恡op-H-p榪涚▼鍙楓戞煡鐪嬪紓甯哥嚎紼

浣跨敤銆恜rintf"%xn"綰跨▼鍙楓戝皢寮傚父綰跨▼鍙瘋漿鍖栦負16榪涘埗

浣跨敤銆恓stack榪涚▼鍙穦grep16榪涘埗寮傚父綰跨▼鍙-A90銆戞潵瀹氫綅寮傚父浠g爜鐨勪綅緗錛堟渶鍚庣殑-A90鏄鏃ュ織琛屾暟錛屼篃鍙浠ヨ緭鍑轟負鏂囨湰鏂囦歡鎴栦嬌鐢ㄥ叾浠栨暟瀛楋級銆傚彲浠ョ湅鍒板紓甯鎬唬鐮佺殑浣嶇疆銆

鎵懼埌鐩稿簲浠g爜媯鏌ワ紝鍙戠幇紜瀹炴湁姝誨驚鐜瀛樺湪銆

鎺掓煡CPU鏁呴殰鐨勫父鐢ㄥ懡浠わ細

top鍛戒護錛歀inux鍛戒護銆傚彲浠ユ煡鐪嬪疄鏃剁殑CPU浣跨敤鎯呭喌銆備篃鍙浠ユ煡鐪嬫渶榪戜竴孌墊椂闂寸殑CPU浣跨敤鎯呭喌銆

PS鍛戒護錛歀inux鍛戒護銆傚己澶х殑榪涚▼鐘舵佺洃鎺у懡浠ゃ傚彲浠ユ煡鐪嬭繘紼嬩互鍙婅繘紼嬩腑綰跨▼鐨勫綋鍓岰PU浣跨敤鎯呭喌銆傚睘浜庡綋鍓嶇姸鎬佺殑閲囨牱鏁版嵁銆

jstack錛欽ava鎻愪緵鐨勫懡浠ゃ傚彲浠ユ煡鐪嬫煇涓榪涚▼鐨勫綋鍓嶇嚎紼嬫爤榪愯屾儏鍐點傛牴鎹榪欎釜鍛戒護鐨勮緭鍑哄彲浠ュ畾浣嶆煇涓榪涚▼鐨勬墍鏈夌嚎紼嬬殑褰撳墠榪愯岀姸鎬併佽繍琛屼唬鐮侊紝浠ュ強鏄鍚︽婚攣絳夌瓑銆

pstack錛歀inux鍛戒護銆傚彲浠ユ煡鐪嬫煇涓榪涚▼鐨勫綋鍓嶇嚎紼嬫爤榪愯屾儏鍐點

D. Linux裡面cpu佔用太高排查思路是什麼

可以通過top命令來查看佔用cpu的軟體看是否有僵屍進程在佔用cpu如果可以通過kill殺死無用的進程!

E. linux cpu佔用較高

Linux伺服器上出現CPU負載達到100%居高不下的情況,如果CPU 持續跑高,則會影響業務系統的正常運行; CPU利用率。根據經驗來看,用戶空間進程佔用CPU比例在 65-70%。一般不能超過這個比例,超過這個比例,系統性能就會降低,平均負載升高,這點將會在下面的測試中看到。
進程上下文切換。上下文切換和CPU利用率應該聯系起來,如果CPU利用率低,那麼上下文切換稍高點也能接受。上下文切換也是需要消耗CPU資源的,頻繁的切換必將使得CPU利用率升高。
運行隊列中等待運行的進程數。每個CPU核心中等待處理的進程數不應該超過3個線程/進程。如4核心的機器,那麼隊列的最大值應該不超過12個。
對於CPU過載問題通常使用以下兩種方式即可快速定位(不能涵蓋所有特殊情況,請作為其中的參考排查思路):
一、排查分析
方法一(針對JAVA應用):

第一步:使用

top命令,然後按shift+p按照CPU排序

找到佔用CPU過高的進程的pid

第二步:使用

top -H -p [進程id]

找到進程中消耗資源最高的線程的id

第三步:使用

echo 'obase=16;[線程id]' | bc或者printf "%x\n" [線程id]

將線程id轉換為16進制(字母要小寫)

bc是linux的計算器命令

第四步(此步驟可以和相對應的java開發進行一起排查):執行

jstack [進程id] |grep -A 10 [線程id的16進制]」

查看線程狀態信息

二、kswapd0 進程佔用 CPU 較高
操作系統都用分頁機制來管理物理內存,操作系統將磁碟的一部分劃出來作為虛擬內存,由於內存的速度要比磁碟快得多,所以操作系統要按照某種換頁機制將不需要的頁面換到磁碟中,將需要的頁面調到內存中,由於內存持續不足,這個換頁動作持續進行,kswapd0 是虛擬內存管理中負責換頁的,當伺服器內存不足的時候 kswapd0 會執行換頁操作,這個換頁操作是十分消耗主機 CPU 資源的。如果通過 top 發現該進程持續處於非睡眠狀態,且運行時間較長,可以初步判定系統在持續的進行換頁操作,可以將問題轉向內存不足的原因來排查。

閱讀全文

與linuxgc佔用cpu過高相關的資料

熱點內容
華為應用裡面有了app說明什麼 瀏覽:801
資料庫中xy是什麼意思 瀏覽:893
u盤打不開提示找不到應用程序 瀏覽:609
網站功能介紹怎麼寫 瀏覽:954
word在試圖打開文件時錯誤 瀏覽:108
主板無vga插槽怎麼連接編程器 瀏覽:521
錄視頻文件在哪裡刪除 瀏覽:881
word2013如何插入文件 瀏覽:233
proe教程百度網盤 瀏覽:197
如何控制遠程linux伺服器 瀏覽:740
it教學app有哪些 瀏覽:34
怎麼在ps摳的圖變成矢量文件 瀏覽:405
口袋妖怪銀魂安卓v11 瀏覽:1
網站上芒果tv的賬號都是什麼 瀏覽:104
帶公式的表格如何刷新數據 瀏覽:81
數據標注語音和2d哪個好 瀏覽:145
保存excel文件的方法 瀏覽:655
手機上看不到電腦上的文件 瀏覽:626
關於ps的微信公眾號 瀏覽:612
矩陣論教程 瀏覽:971

友情鏈接