国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

服務(wù)器CPU飚高排查

這篇具有很好參考價(jià)值的文章主要介紹了服務(wù)器CPU飚高排查。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

排查思路

當(dāng)正在運(yùn)行的Java服務(wù)導(dǎo)致服務(wù)器的CPU突然飆高時(shí),我們該如何排查定位到哪個(gè)接口的哪行代碼導(dǎo)致CPU飆高的問題呢?我主要提供兩個(gè)方案:

  • jstack
  • arthas
準(zhǔn)備工作
代碼準(zhǔn)備

現(xiàn)在需要準(zhǔn)備一段可以讓服務(wù)器CPU飆高的代碼以及把代碼部署到服務(wù)環(huán)境。

@RestController
@RequestMapping("/test")
public class TestController {

    @GetMapping("top")
    public void test() {
        while (true) {

        }
    }
}
打包

使用maven打包或者Docker服務(wù)將代碼部署到服務(wù)器。

#整流程
mvn clean

mvn compile

mvn package

在IDEA中為:

服務(wù)器CPU飚高排查,筆記,踩坑,Linux,開發(fā)語言,java,linux

簡單部署
java -jar demo1-0.0.1-SNAPSHOT.jar > demo.log &
jstack

jstack 是 JDK 提供的一個(gè)命令行工具,用于生成 Java 進(jìn)程的線程轉(zhuǎn)儲(chǔ)信息(也稱為線程快照)。它可以幫助診斷和調(diào)試 Java 應(yīng)用程序的線程相關(guān)問題,如死鎖、線程等待、線程占用CPU過高等。

jstack 命令可以在運(yùn)行中的 Java 進(jìn)程上執(zhí)行,它會(huì)輸出當(dāng)前 Java 進(jìn)程中所有線程的堆棧跟蹤信息。這些信息包括每個(gè)線程的方法調(diào)用棧、鎖信息、線程狀態(tài)等。

以下是 jstack 的一些常見用途和作用:

  • 線程分析:jstack 生成的線程轉(zhuǎn)儲(chǔ)信息可以顯示 Java 進(jìn)程中所有線程的堆棧跟蹤信息。您可以查看每個(gè)線程的調(diào)用棧,了解線程執(zhí)行的代碼路徑和方法調(diào)用關(guān)系。
  • 死鎖檢測:通過查看線程的鎖信息,jstack 可以幫助您發(fā)現(xiàn)是否存在死鎖情況。它會(huì)顯示每個(gè)線程當(dāng)前持有的鎖和等待的鎖,以及導(dǎo)致死鎖的鎖依賴關(guān)系。
  • 線程等待:jstack 可以顯示線程的等待狀態(tài),幫助您確定是否存在線程等待某個(gè)資源的情況。這對于排查程序在運(yùn)行時(shí)出現(xiàn)的卡死或長時(shí)間無響應(yīng)問題非常有用。
  • CPU 使用分析:通過查看線程的 CPU 使用情況,jstack 可以幫助您確定哪些線程消耗了大量的 CPU 資源,找出可能導(dǎo)致 CPU 占用過高的原因。
  • 線程狀態(tài)監(jiān)控:jstack 提供了對線程狀態(tài)的監(jiān)控,您可以了解線程的狀態(tài),如運(yùn)行、阻塞、等待等,以便更好地理解應(yīng)用程序的運(yùn)行情況。
獲取CPU飆高的進(jìn)程PID

top命令用于監(jiān)視 Linux 系統(tǒng)的實(shí)時(shí)進(jìn)程和系統(tǒng)性能信息。那么我們可以通過top命令來實(shí)時(shí)定位到那個(gè)線程占用大量CPU資源。

輸入命令:

top

服務(wù)器CPU飚高排查,筆記,踩坑,Linux,開發(fā)語言,java,linux

可以看到PID列中進(jìn)程id為8066的進(jìn)程CPU占用率達(dá)到了98.7%,那么我們接下來排查的就是這個(gè)進(jìn)程。

定位進(jìn)程中的問題線程
top -H -p PID 

該命令的作用是在 top 工具中顯示指定進(jìn)程ID(PID)的線程級(jí)別信息。它將以線程級(jí)別的模式顯示指定進(jìn)程的各個(gè)線程的詳細(xì)信息。

具體解釋如下:

  • -H 選項(xiàng)指示 top 以線程級(jí)別的模式顯示信息。
  • -p pid 選項(xiàng)指定需要顯示信息的進(jìn)程ID(PID)。在這個(gè)例子中,PID 為 8066 的進(jìn)程的線程信息將被顯示。

服務(wù)器CPU飚高排查,筆記,踩坑,Linux,開發(fā)語言,java,linux

將PID進(jìn)程號(hào)轉(zhuǎn)為16進(jìn)制

以上已定位具體線程pid導(dǎo)致CPU飆高,那么將指定pid轉(zhuǎn)換為16進(jìn)制,以便下一步定位具體線程問題使用。

將一個(gè)十進(jìn)制的進(jìn)程ID(PID)轉(zhuǎn)換為十六進(jìn)制格式的字符串,可以使用 printf 命令來實(shí)現(xiàn)。printf 命令可以根據(jù)指定的格式將數(shù)據(jù)進(jìn)行格式化輸出。

printf '0x%x\n' pid
定位指定線程問題
jstack pid | grep hexadecimal -A N

具體解釋如下:

  • jstack pid 用于執(zhí)行 jstack 命令并生成線程轉(zhuǎn)儲(chǔ)信息。
  • | 是管道符號(hào),將 jstack 命令的輸出傳遞給下一個(gè)命令。
  • grep hexadecimal 表示使用 grep 命令來匹配包含 "hexadecimal" 的行。
  • -A N 選項(xiàng)指定在匹配到的問題代碼行后顯示 N 行內(nèi)容。

服務(wù)器CPU飚高排查,筆記,踩坑,Linux,開發(fā)語言,java,linux

那么可以很快定位到是TestController類第20行出現(xiàn)了問題。

那么我們看代碼:

服務(wù)器CPU飚高排查,筆記,踩坑,Linux,開發(fā)語言,java,linux

arthas

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

下載
curl -O https://arthas.aliyun.com/arthas-boot.jar
運(yùn)行
java -jar arthas-boot.jar --repo-mirror aliyun --use-http

服務(wù)器CPU飚高排查,筆記,踩坑,Linux,開發(fā)語言,java,linux

運(yùn)行時(shí)arthas會(huì)提示用戶選擇哪個(gè)Jar服務(wù),那么我們選擇【1】,按1即可。

服務(wù)器CPU飚高排查,筆記,踩坑,Linux,開發(fā)語言,java,linux

開始監(jiān)控。

排查占用最高的線程
thread -n 1

服務(wù)器CPU飚高排查,筆記,踩坑,Linux,開發(fā)語言,java,linux

使用arthas可以更快定位問題代碼行。

更多使用技巧請參考官方文檔:

Arthas文章來源地址http://www.zghlxwxcb.cn/news/detail-688699.html

到了這里,關(guān)于服務(wù)器CPU飚高排查的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux 服務(wù)器 CPU 詳細(xì)信息查看、物理 CPU 以及邏輯 CPU

    Linux 服務(wù)器 CPU 詳細(xì)信息查看、物理 CPU 以及邏輯 CPU

    什么是CPU CPU: (Central Processing Unit)也稱為中央處理器,主要通過內(nèi)部總線,建立起芯片內(nèi)各部件之間的信息傳輸通路 查看CPU詳細(xì)信息 : 我們平常在操作Linux服務(wù)器時(shí),如何能夠知道服務(wù)器的CPU的詳細(xì)信息呢 [xxx@xxx ~]# ?cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 16: CPU 核心數(shù) Intel?

    2024年01月25日
    瀏覽(34)
  • 阿里云服務(wù)器部署安裝hadoop與elasticsearch踩坑筆記

    阿里云服務(wù)器部署安裝hadoop與elasticsearch踩坑筆記

    2023-09-12 14:00——2023.09.13 20:06 目錄 00、軟件版本 01、阿里云服務(wù)器部署hadoop 1.1、修改四個(gè)配置文件 1.1.1、core-site.xml 1.1.2、hdfs-site.xml 1.1.3、mapred-site.xml 1.1.4、yarn-site.xml 1.2、修改系統(tǒng)/etc/hosts文件與系統(tǒng)變量 1.2.1、修改主機(jī)名解析文件/etc/hosts 1.2.2、修改系統(tǒng)環(huán)境變量/etc/profil

    2024年02月08日
    瀏覽(48)
  • Linux 查看服務(wù)器內(nèi)存、CPU 命令

    1 查看物理CPU個(gè)數(shù): ????????Procs(進(jìn)程) 2?查看服務(wù)器CPU內(nèi)核個(gè)數(shù) 1 linux查看系統(tǒng)內(nèi)存(硬盤) 2 查看服務(wù)器硬盤(當(dāng)前文件夾下)使用率: 3 查看服務(wù)器硬盤(所有文件占用率)使用率: 1 查看內(nèi)存,不帶單位 2 查看內(nèi)存使用情況,帶單位,顯示查看結(jié)果 顯示的參數(shù): ??????

    2024年02月15日
    瀏覽(39)
  • linux服務(wù)器查看cpu和內(nèi)存

    linux服務(wù)器查看cpu和內(nèi)存

    cat /proc/cpuinfo | grep \\\"physical id\\\" | sort | uniq | wc -l cat /proc/cpuinfo | grep \\\"cpu cores\\\" | uniq grep processor /proc/cpuinfo|wc -l cat /proc/cpuinfo |grep MHz|uniq less /proc/cpuinfo |grep model free -m free -h

    2024年02月05日
    瀏覽(39)
  • linux服務(wù)器監(jiān)控之內(nèi)存、cpu、網(wǎng)絡(luò)、磁盤

    linux服務(wù)器監(jiān)控之內(nèi)存、cpu、網(wǎng)絡(luò)、磁盤

    一、服務(wù)器實(shí)時(shí)內(nèi)存監(jiān)控 1、Linux幫助命令 man:Linux下的函數(shù)手冊命令,可以查看所有命令的使用方法 ls:? ls -al: ll: 2、實(shí)時(shí)監(jiān)控命令 top:?? 能夠?qū)崟r(shí)監(jiān)控系統(tǒng)的運(yùn)行狀態(tài),并且可以按照cpu及內(nèi)存等進(jìn)行排序。 ? ? ? ? ? ?語法:top -hv|-bcHiOSs -d secs -n max -u|U user -p pid(s) -o file

    2024年02月09日
    瀏覽(46)
  • 如何提升Linux服務(wù)器cpu利用率

    ? ? 目錄 一、安裝cpulimit和相關(guān)依賴包 1. 安裝cpulimit 2. 編寫提升cpu利用率腳本,并執(zhí)行 ????????如何有效提升服務(wù)器器CPU利用率,可以通過自定義腳本結(jié)合cpulimit達(dá)到提升利用率和控制到目標(biāo)值。 1. 安裝cpulimit ##1. 安裝cpulimit ?yum install -y cpulimit ##2. 安裝依賴包 yum -y inst

    2024年02月10日
    瀏覽(34)
  • Linux(包括centos) 如何查看服務(wù)器內(nèi)存、CPU

    Linux(包括centos) 如何查看服務(wù)器內(nèi)存、CPU

    CPU架構(gòu)主要包括:amd64、arm32v7、arm64v8、mips64el、mips32、ppc64le和ppc32等架構(gòu)。 CPU信息主要為中央處理器詳細(xì)信息,包括: 架構(gòu) 核心數(shù)量 處理速度 廠商名稱 CPU主頻 標(biāo)簽 … 注:不同的操作系統(tǒng)或者CPU架構(gòu)提供的信息不一定相同。 輸出: 可以通過grep命令過濾信息: lscpu是一個(gè)

    2024年02月12日
    瀏覽(28)
  • 命令查看Linux服務(wù)器內(nèi)存、CPU、顯卡、硬盤使用情況

    命令查看Linux服務(wù)器內(nèi)存、CPU、顯卡、硬盤使用情況

    使用命令:free -m 大致結(jié)果類似下圖: 內(nèi)存占用情況 參數(shù)解釋: Mem行(單位均為M): total:內(nèi)存總數(shù) used:已使用內(nèi)存數(shù) free:空閑內(nèi)存數(shù) shared:當(dāng)前廢棄不用 buffers:緩存內(nèi)存數(shù)(Buffer) cached:緩存內(nèi)舒數(shù)(Page) (-/+ buffers/cache)行: (-buffers/cache): 真正使用的內(nèi)存數(shù),指

    2024年02月04日
    瀏覽(28)
  • Linux 查看服務(wù)器內(nèi)存、CPU、網(wǎng)絡(luò)等占用情況的命令

    Linux 查看服務(wù)器內(nèi)存、CPU、網(wǎng)絡(luò)等占用情況的命令

    1、查看物理CPU個(gè)數(shù):cat? 2、查看服務(wù)器CPU內(nèi)核個(gè)數(shù):cat? ? 每個(gè)物理CPU中core的個(gè)數(shù)(即核數(shù)) 3、服務(wù)器內(nèi)存使用情況:free 3.1、緩存清除 如果cached過大接近total數(shù)就需要清除緩存了,緩存清除命令: ?4、查看服務(wù)器的平均負(fù)載:top top? ?--可以查看服務(wù)器各個(gè)進(jìn)程情況 u

    2024年02月08日
    瀏覽(30)
  • Linux:查看服務(wù)器信息,CPU、內(nèi)存、系統(tǒng)版本、內(nèi)核版本等

    Linux:查看服務(wù)器信息,CPU、內(nèi)存、系統(tǒng)版本、內(nèi)核版本等

    還是最近工作的總結(jié),在做一些性能驗(yàn)證,這就需要要根據(jù)服務(wù)器的配置綜合考慮來做進(jìn)一步的結(jié)論論證,廢話不多說 第一種方式 第二種方式 個(gè)人偏推崇第一種方式吧,能夠更明顯的看到版本和一些詳細(xì)信息 第一種方式 這個(gè)命令適用于所有的Linux發(fā)行版,包括Redhat、SuSE、

    2024年01月19日
    瀏覽(39)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包