chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CPU 100%問(wèn)題怎么排查?有哪些方法?

小林coding ? 來(lái)源:古時(shí)的風(fēng)箏 ? 2024-03-18 17:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

首先,先用放之四海而皆準(zhǔn)的命令 top,確認(rèn)一下是不是 Java 進(jìn)程是罪魁禍?zhǔn)?。Java 進(jìn)程要不然就是個(gè)后臺(tái)任務(wù),要不然就是個(gè) jar 包,比如一個(gè)Spring Boot 服務(wù)。

剛接觸開(kāi)發(fā)那會(huì)兒,別的命令都不會(huì),一看到CPU飆升,上來(lái)就是一個(gè) top,當(dāng)top 命令執(zhí)行完了,也就完了。就像一個(gè)舉重選手用盡了所有力氣,然后就只能呆坐在哪里了。

下面介紹兩種后續(xù)操作,讓我們?cè)趫?zhí)行完 top以后,確定是 Java 進(jìn)程搞的鬼的情況下,順利的找出出現(xiàn)問(wèn)題的方法。

第一種,用系統(tǒng)工具和 JDK 自帶的 jstack 工具。第二種,用 Arthas 探測(cè)工具。

使用 jstack 工具

第一步,使用 top 找到占用 CPU 最高的 Java 進(jìn)程

前面說(shuō)了這一步,就是使用 Top 命令

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

使用 top命令發(fā)現(xiàn)占用 CPU 99.7% 的線程是 Java 進(jìn)程,進(jìn)程 PID 為 13731。

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

上一步用 top命令找到了那個(gè) Java 進(jìn)程。那一個(gè)進(jìn)程中有那么多線程,不可能所有線程都一直占著 CPU 不放,這一步要做的就是揪出這個(gè)罪魁禍?zhǔn)?,?dāng)然有可能不止一個(gè)。

接下來(lái),還是用 top命令,只不過(guò)加一個(gè)參數(shù)-Hp ,就是下面這樣

top-Hppid

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

top-Hp13731

執(zhí)行之后,這個(gè)Java進(jìn)程中占用線程占用 CPU 的情況就列出來(lái)了。

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

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

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

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

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

jstack 用于生成 Java 進(jìn)程的線程快照(thread dump)。線程快照是一個(gè)關(guān)于 Java 進(jìn)程中所有線程當(dāng)前狀態(tài)的快照,包括每個(gè)線程的堆棧信息。通過(guò)分析線程快照,可以了解 Java 進(jìn)程中各個(gè)線程的運(yùn)行狀態(tài)、鎖信息等。

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

當(dāng)前 Java 程序的所有線程信息都可以通過(guò) jstack命令查看,我們用jstack命令將第一步找到的 Java 進(jìn)程的線程棧保存下來(lái)。

jstack13731>thread_stack.log

第四步,在線程棧中查找最貴禍?zhǔn)椎木€程

第二步已經(jīng)找到了這個(gè)罪魁禍?zhǔn)椎木€程 PID 是 13756。

然后我們將 13756轉(zhuǎn)換為 16 進(jìn)制的,可以用在線進(jìn)制轉(zhuǎn)換的網(wǎng)站直接轉(zhuǎn)換,比如 https://tool.oschina.net/hexconvert 這個(gè),轉(zhuǎn)換結(jié)果為 0x35bc。

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

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

然后,我么能看到了我們需要的線程名稱(chēng)、線程狀態(tài),哪個(gè)方法的哪一行代碼消耗了最多的 CPU 都很清楚了。

第二種,Arthas

Arthas 是阿里開(kāi)源的一款線上監(jiān)控診斷產(chǎn)品,通過(guò)全局視角實(shí)時(shí)查看應(yīng)用 load、內(nèi)存、gc、線程的狀態(tài)信息,并能在不修改應(yīng)用代碼的情況下,對(duì)業(yè)務(wù)問(wèn)題進(jìn)行診斷,包括查看方法調(diào)用的出入?yún)ⅰ惓?,監(jiān)測(cè)方法執(zhí)行耗時(shí),類(lèi)加載信息等,大大提升線上問(wèn)題排查效率。

用 Arthas 查找占用 CPU 最高的方法只是一個(gè)開(kāi)胃小菜,除此之外,它最大的用途是在不改代碼、不重啟服務(wù)的情況下對(duì)程序進(jìn)行動(dòng)態(tài)監(jiān)控。如果你碰到了線上詭異問(wèn)題,一定要用 Arthas 嘗試找一找問(wèn)題,開(kāi)闊一下眼界。

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

安裝 Arthas

當(dāng)然了,要使用 Arthas,你就必須先把它安裝到你的目標(biāo)服務(wù)器上,也就是那個(gè)出問(wèn)題的Java服務(wù)所在的服務(wù)器。

下載 jar 包

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

啟動(dòng) Arthas 服務(wù)

java-jararthas-boot.jar

啟動(dòng)之后,會(huì)列出當(dāng)前這臺(tái)服務(wù)器上的所有 Java 進(jìn)程,然后你選擇你要排查的那個(gè)服務(wù)即可。

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

然后出現(xiàn) arthas@之后表示已經(jīng)啟動(dòng),并成功 attach 到目標(biāo)進(jìn)程上 。

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

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

好了,開(kāi)始用 Arthas 找到導(dǎo)致 CPU 負(fù)載過(guò)高的問(wèn)題吧。

找到占用CPU最高的進(jìn)程

第一步,其實(shí)還是用 top命令找到占用 CPU 最高的進(jìn)程,也就是 Arthas 啟動(dòng)時(shí)選擇 attach 的那個(gè) Java 進(jìn)程。

然后 java -jar arthas-boot.jar啟動(dòng)Arthas,并attach 。

找到占用 CPU 最高的線程

執(zhí)行 thread命令,這個(gè)命令會(huì)顯示所有線程的信息,并且把CPU使用率高的線程排在前面。

這樣,一眼就看出來(lái)了,第一個(gè)線程的 CPU 使用率高達(dá) 99% 了,就是它。

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

查看堆棧信息

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

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

然后直接就看出來(lái)了出現(xiàn)問(wèn)題的位置,TestController.java文件的 high方法的第23行。然后進(jìn)代碼看

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

這個(gè)方法是我故意寫(xiě)的死循環(huán),真實(shí)情況當(dāng)然沒(méi)有這么明顯,還需要針對(duì)具體代碼認(rèn)真分析。

總結(jié)

高 CPU 占用率這個(gè)問(wèn)題是一種很常見(jiàn)也很典型的線上問(wèn)題,排查方式只要按上述順序記下來(lái)就基本上沒(méi)什么問(wèn)題。

其實(shí)還是推薦使用 Arthas,除了它確實(shí)功能非常多之外,還有就是在線上場(chǎng)景下,使用 jstack有時(shí)會(huì)碰到問(wèn)題,如果這個(gè)線程已經(jīng)忙的一點(diǎn)轉(zhuǎn)圜的余地都沒(méi)有了,jstack命令可能會(huì)執(zhí)行失敗。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11187

    瀏覽量

    221288
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2992

    瀏覽量

    114810

原文標(biāo)題:面試官:CPU 100% 問(wèn)題怎么排查?

文章出處:【微信號(hào):小林coding,微信公眾號(hào):小林coding】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用匯編知識(shí)排查疑難問(wèn)題的方法

    那么,本篇文章,我將再介紹一個(gè)使用匯編知識(shí)排查疑難問(wèn)題的方法,希望對(duì)大家有所幫助。
    發(fā)表于 07-27 10:31 ?952次閱讀

    Linux系統(tǒng)CPU占用率100%的排查思路

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

    AD9963一直沒(méi)有信號(hào)輸出是什么原因造成的呢?什么排查方法嗎?

    DAC一直沒(méi)有信號(hào)輸出。 請(qǐng)問(wèn)可能是什么原因造成這種現(xiàn)象的呢?什么排查方法嗎? 望各位大神指教。。。。。。
    發(fā)表于 12-22 06:52

    電能質(zhì)量的測(cè)量方法,如何排查電能質(zhì)量問(wèn)題?

    電能質(zhì)量的測(cè)量方法如何排查電能質(zhì)量問(wèn)題?
    發(fā)表于 04-09 06:47

    排查EMI問(wèn)題的實(shí)用性技巧哪些?

    如何減少一個(gè)產(chǎn)品在測(cè)試室進(jìn)行最終完整的EMC一致性評(píng)估時(shí)失敗的風(fēng)險(xiǎn)?排查EMI問(wèn)題的實(shí)用性技巧哪些?
    發(fā)表于 05-11 06:42

    GPIO無(wú)法觸發(fā)中斷常規(guī)排查方法哪些?

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

    建立一個(gè)方法和套路來(lái)對(duì) Load 高問(wèn)題排查

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

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

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

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

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

    JVM CPU使用率飆高問(wèn)題的排查分析過(guò)程

    問(wèn)題現(xiàn)象 排查過(guò)程 問(wèn)題現(xiàn)象 首先,我們一起看看通過(guò) VisualVM 監(jiān)控到的機(jī)器 CPU 使用率圖: 如上圖所示,在 下午3:45 分之前,CPU 的使用率明顯飆高,最高飆到近 100
    的頭像 發(fā)表于 10-10 16:31 ?2940次閱讀

    網(wǎng)絡(luò)故障排查思路和處理方法

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

    CPU散熱使用的導(dǎo)熱凝膠的不同使用方法和注意事項(xiàng)哪些呢?

    CPU散熱使用的導(dǎo)熱凝膠的不同使用方法和注意事項(xiàng)哪些呢?,15年行業(yè)經(jīng)驗(yàn)和您聊聊
    的頭像 發(fā)表于 03-04 10:24 ?4601次閱讀
    <b class='flag-5'>CPU</b>散熱使用的導(dǎo)熱凝膠的不同使用<b class='flag-5'>方法</b>和注意事項(xiàng)<b class='flag-5'>有</b>哪些呢?

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

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

    常見(jiàn)的電源適配器故障及排查方法哪些?

    常見(jiàn)的電源適配器故障及排查方法哪些? 電源適配器故障是使用電子設(shè)備時(shí)經(jīng)常遇到的問(wèn)題之一。合理排查和解決電源適配器故障是確保電子設(shè)備正常運(yùn)行的重要步驟。本文將詳細(xì)介紹常見(jiàn)的電源適配器故
    的頭像 發(fā)表于 11-24 14:08 ?1.4w次閱讀

    DCS日常維護(hù)與故障分析排查方法

    DCS(分布式控制系統(tǒng))的日常維護(hù)與故障分析排查是確保系統(tǒng)穩(wěn)定運(yùn)行的關(guān)鍵環(huán)節(jié)。以下提供DCS日常維護(hù)與故障分析排查的詳細(xì)方法: 一、日常維護(hù)方法 1. 硬件維護(hù): ● 定期對(duì)DCS控制
    的頭像 發(fā)表于 03-05 16:53 ?1165次閱讀
    DCS日常維護(hù)與故障分析<b class='flag-5'>排查</b><b class='flag-5'>方法</b>