在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CPU 100%問題怎么排查?有哪些方法?

小林coding ? 來源:古時的風箏 ? 2024-03-18 17:09 ? 次閱讀

首先,先用放之四海而皆準的命令 top,確認一下是不是 Java 進程是罪魁禍首。Java 進程要不然就是個后臺任務,要不然就是個 jar 包,比如一個Spring Boot 服務。

剛接觸開發那會兒,別的命令都不會,一看到CPU飆升,上來就是一個 top,當top 命令執行完了,也就完了。就像一個舉重選手用盡了所有力氣,然后就只能呆坐在哪里了。

下面介紹兩種后續操作,讓我們在執行完 top以后,確定是 Java 進程搞的鬼的情況下,順利的找出出現問題的方法。

第一種,用系統工具和 JDK 自帶的 jstack 工具。第二種,用 Arthas 探測工具。

使用 jstack 工具

第一步,使用 top 找到占用 CPU 最高的 Java 進程

前面說了這一步,就是使用 Top 命令

e35b0f8c-e4f5-11ee-a297-92fbcf53809c.png

使用 top命令發現占用 CPU 99.7% 的線程是 Java 進程,進程 PID 為 13731。

第二步,找到占用 CPU 最高的線程

上一步用 top命令找到了那個 Java 進程。那一個進程中有那么多線程,不可能所有線程都一直占著 CPU 不放,這一步要做的就是揪出這個罪魁禍首,當然有可能不止一個。

接下來,還是用 top命令,只不過加一個參數-Hp ,就是下面這樣

top-Hppid

H參數表示要顯示線程級別的信息,p則表示指定的pid,也就是進程id。代入前面得到的那個Java進程,完整的命令是這樣的

top-Hp13731

執行之后,這個Java進程中占用線程占用 CPU 的情況就列出來了。

e36c8668-e4f5-11ee-a297-92fbcf53809c.png

可以看到占用 CPU 最高的那個線程 PID 為 13756。

第三步,保存線程堆棧信息

這就要用到 JDK 默認提供的一個工具了,叫做 jstack。當你安裝了 JDK 之后,在 bin目錄下會有一大堆內置的工具,java也是其中之一,還有另外我們可能比較熟悉的 javac

e370ffcc-e4f5-11ee-a297-92fbcf53809c.png

jstack 用于生成 Java 進程的線程快照(thread dump)。線程快照是一個關于 Java 進程中所有線程當前狀態的快照,包括每個線程的堆棧信息。通過分析線程快照,可以了解 Java 進程中各個線程的運行狀態、鎖信息等。

我們用jstack的目的就是將那個占用 CPU 最高的線程的堆棧信息搞下來,然后進一步分析。使用命令 jstack pid > out.log將某個進程的堆棧信息輸出到 out.log文件中。

當前 Java 程序的所有線程信息都可以通過 jstack命令查看,我們用jstack命令將第一步找到的 Java 進程的線程棧保存下來。

jstack13731>thread_stack.log

第四步,在線程棧中查找最貴禍首的線程

第二步已經找到了這個罪魁禍首的線程 PID 是 13756。

然后我們將 13756轉換為 16 進制的,可以用在線進制轉換的網站直接轉換,比如 https://tool.oschina.net/hexconvert 這個,轉換結果為 0x35bc。

最后,我們在線程棧中,也就是上一步保存的那個 thread_stack.log 文件,在里面查找這個16進制的線程 id (0x35bc)。

e378c7c0-e4f5-11ee-a297-92fbcf53809c.png

然后,我么能看到了我們需要的線程名稱、線程狀態,哪個方法的哪一行代碼消耗了最多的 CPU 都很清楚了。

第二種,Arthas

Arthas 是阿里開源的一款線上監控診斷產品,通過全局視角實時查看應用 load、內存、gc、線程的狀態信息,并能在不修改應用代碼的情況下,對業務問題進行診斷,包括查看方法調用的出入參、異常,監測方法執行耗時,類加載信息等,大大提升線上問題排查效率。

用 Arthas 查找占用 CPU 最高的方法只是一個開胃小菜,除此之外,它最大的用途是在不改代碼、不重啟服務的情況下對程序進行動態監控。如果你碰到了線上詭異問題,一定要用 Arthas 嘗試找一找問題,開闊一下眼界。

好了,更多的功能到官網 https://arthas.aliyun.com/ 了解吧,接下來就將一下如何用 Arthas 達到前面用 jstack 同樣的目的。

安裝 Arthas

當然了,要使用 Arthas,你就必須先把它安裝到你的目標服務器上,也就是那個出問題的Java服務所在的服務器。

下載 jar 包

curl-Ohttps://arthas.aliyun.com/arthas-boot.jar

啟動 Arthas 服務

java-jararthas-boot.jar

啟動之后,會列出當前這臺服務器上的所有 Java 進程,然后你選擇你要排查的那個服務即可。

e37e9448-e4f5-11ee-a297-92fbcf53809c.png

然后出現 arthas@之后表示已經啟動,并成功 attach 到目標進程上 。

然后可以輸入命令 dashboard看一下實時面板,默認 5 秒刷新一次,在這個面板上能夠看到線程、內存堆棧、GC和Runtime的基本信息。如果你用過 VisualVM 的話,就和那個基本一樣。

e387ff2e-e4f5-11ee-a297-92fbcf53809c.png

好了,開始用 Arthas 找到導致 CPU 負載過高的問題吧。

找到占用CPU最高的進程

第一步,其實還是用 top命令找到占用 CPU 最高的進程,也就是 Arthas 啟動時選擇 attach 的那個 Java 進程。

然后 java -jar arthas-boot.jar啟動Arthas,并attach 。

找到占用 CPU 最高的線程

執行 thread命令,這個命令會顯示所有線程的信息,并且把CPU使用率高的線程排在前面。

這樣,一眼就看出來了,第一個線程的 CPU 使用率高達 99% 了,就是它。

e38e6ef4-e4f5-11ee-a297-92fbcf53809c.png

查看堆棧信息

使用 thread ID 獲取堆棧信息,其實就是 jstack pid相同的作用。通過前一步看到這個線程的 ID 是18,然后執行 thread 18

e3af5c9a-e4f5-11ee-a297-92fbcf53809c.png

然后直接就看出來了出現問題的位置,TestController.java文件的 high方法的第23行。然后進代碼看

com.moonkite.wallpapermanage.controller.TestController.high(TestController.java:23)

這個方法是我故意寫的死循環,真實情況當然沒有這么明顯,還需要針對具體代碼認真分析。

總結

高 CPU 占用率這個問題是一種很常見也很典型的線上問題,排查方式只要按上述順序記下來就基本上沒什么問題。

其實還是推薦使用 Arthas,除了它確實功能非常多之外,還有就是在線上場景下,使用 jstack有時會碰到問題,如果這個線程已經忙的一點轉圜的余地都沒有了,jstack命令可能會執行失敗。



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10902

    瀏覽量

    213016
  • JAVA
    +關注

    關注

    19

    文章

    2974

    瀏覽量

    105147

原文標題:面試官:CPU 100% 問題怎么排查?

文章出處:【微信號:小林coding,微信公眾號:小林coding】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    使用匯編知識排查疑難問題的方法

    那么,本篇文章,我將再介紹一個使用匯編知識排查疑難問題的方法,希望對大家有所幫助。
    發表于 07-27 10:31 ?701次閱讀

    Linux系統CPU占用率100%的排查思路

    今天浩道跟大家分享linux硬核干貨,工作中當你服務器CPU達到100%時,干著急是沒有用的,該查問題還得自己去查。本文將給大家羅列排查異常故障思路,并且文末附上相關shell腳本,去實際一番,你會發現原來解決問題的
    的頭像 發表于 01-23 10:26 ?6149次閱讀
    Linux系統<b class='flag-5'>CPU</b>占用率<b class='flag-5'>100</b>%的<b class='flag-5'>排查</b>思路

    AD9963一直沒有信號輸出是什么原因造成的呢?什么排查方法嗎?

    DAC一直沒有信號輸出。 請問可能是什么原因造成這種現象的呢?什么排查方法嗎? 望各位大神指教。。。。。。
    發表于 12-22 06:52

    電能質量的測量方法,如何排查電能質量問題?

    電能質量的測量方法如何排查電能質量問題?
    發表于 04-09 06:47

    排查EMI問題的實用性技巧哪些?

    如何減少一個產品在測試室進行最終完整的EMC一致性評估時失敗的風險?排查EMI問題的實用性技巧哪些?
    發表于 05-11 06:42

    GPIO無法觸發中斷常規排查方法哪些?

    1、電源域是否打開 2、IOMUX是否設置對 3、是否配置了中斷方式,外部電平是否滿足條件 4、是否為輸入狀態 備注:這次分享的是,我們做展銳平臺GPIO排查方法,不同平臺、不同版本、不同項目都會
    發表于 11-24 16:11

    建立一個方法和套路來對 Load 高問題排查

    講解 Linux Load 高如何排查的話題屬于老生常談了,但多數文章只是聚焦了幾個點,缺少整體排查思路的介紹。所謂 “授人以魚不如授人以漁"。本文試圖建立一個方法和套路,來幫助讀者對 Load 高問題
    的頭像 發表于 12-28 14:18 ?5530次閱讀
    建立一個<b class='flag-5'>方法</b>和套路來對 Load 高問題<b class='flag-5'>排查</b>

    cpu使用率多少算正常_cpu使用率100怎么辦

    本文首先分析了cpu使用率多少算正常,其次闡述了cpu使用率100的解決方法,最后介紹了優化cpu使用率的
    發表于 04-29 09:28 ?1.6w次閱讀

    “三維六步”干擾排查哪幾種方法?資料下載

    電子發燒友網為你提供“三維六步”干擾排查哪幾種方法?資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發表于 04-15 08:50 ?17次下載
    “三維六步”干擾<b class='flag-5'>排查</b><b class='flag-5'>有</b>哪幾種<b class='flag-5'>方法</b>?資料下載

    JVM CPU使用率飆高問題的排查分析過程

    問題現象 排查過程 問題現象 首先,我們一起看看通過 VisualVM 監控到的機器 CPU 使用率圖: 如上圖所示,在 下午3:45 分之前,CPU 的使用率明顯飆高,最高飆到近 100
    的頭像 發表于 10-10 16:31 ?2390次閱讀

    網絡故障排查思路和處理方法

    網絡故障是最容易出現的,且難以解決的問題。本文提供的網絡故障排查思路和處理方法,可解決日常工作中大部分網絡問題。
    發表于 10-31 09:14 ?1w次閱讀

    CPU散熱使用的導熱凝膠的不同使用方法和注意事項哪些呢?

    CPU散熱使用的導熱凝膠的不同使用方法和注意事項哪些呢?,15年行業經驗和您聊聊
    的頭像 發表于 03-04 10:24 ?3429次閱讀
    <b class='flag-5'>CPU</b>散熱使用的導熱凝膠的不同使用<b class='flag-5'>方法</b>和注意事項<b class='flag-5'>有</b>哪些呢?

    分享排查Linux系統CPU占用的一個Shell腳本

    眾所周知,Linux系統CPU占用100%這個異常現象還是經常遇到的,因此分析其導致異常原因是解決問題的根本。
    的頭像 發表于 09-04 09:17 ?1902次閱讀
    分享<b class='flag-5'>排查</b>Linux系統<b class='flag-5'>CPU</b>占用的一個Shell腳本

    雅馬哈YS/YSM系列貼片機故障排查方法

    雅馬哈YS/YSM系列貼片機故障排查方法
    的頭像 發表于 09-13 10:05 ?3703次閱讀
    雅馬哈YS/YSM系列貼片機故障<b class='flag-5'>排查</b><b class='flag-5'>方法</b>

    常見的電源適配器故障及排查方法哪些?

    常見的電源適配器故障及排查方法哪些? 電源適配器故障是使用電子設備時經常遇到的問題之一。合理排查和解決電源適配器故障是確保電子設備正常運行的重要步驟。本文將詳細介紹常見的電源適配器故
    的頭像 發表于 11-24 14:08 ?8798次閱讀
    主站蜘蛛池模板: 国产高清小视频 | 免费一级毛片视频 | 国产亚洲卡二卡3卡4卡乱码 | a成人在线| 在线视频 一区二区 | 最新激情网 | 国产美女亚洲精品久久久久久 | 99视频在线永久免费观看 | 久久人成| 91福利网winktv | 看黄视频免费 | abc119影院成人免费看 | 六月丁香婷婷激情 | 欧美成人自拍视频 | 欧美专区一区二区三区 | 国产精品久久久久久久久久影院 | sss欧美华人整片在线观看 | 欧美成人 色 图 | 中文字幕第8页 | 老师别揉我胸啊嗯上课呢视频 | 伊人福利视频 | 色综合天天综合网亚洲影院 | 日本黄页网址 | 国产网站黄 | 日本免费人成在线网站 | 网站色| 天天躁天天爽 | 干美女在线视频 | 美女很黄很黄是免费的·无遮挡网站 | 美女被上视频 | 人人插人人插 | 狠狠狠操 | 亚洲一区二区三区免费看 | 激情亚洲 | 亚洲欧美国产五月天综合 | 天天操天天摸天天爽 | 免费在线观看你懂的 | 色老头在线精品视频在线播放 | 速度与激情在线 | 欧美一级做一a做片性视频 欧美一级做一级做片性十三 | 一区二区三区四区视频在线观看 |