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

Java進(jìn)程CPU高負(fù)載排查步驟

這篇具有很好參考價值的文章主要介紹了Java進(jìn)程CPU高負(fù)載排查步驟。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

近期發(fā)現(xiàn)服務(wù)器Java進(jìn)程負(fù)載,超過100%

一、采用top命令定位進(jìn)程

登錄服務(wù)器,執(zhí)行top命令,查看CPU占用情況,找到進(jìn)程的pid

java進(jìn)程cpu使用率高排查,Linux,linux,運(yùn)維,Powered by 金山文檔

很容易發(fā)現(xiàn),PID為29706的java進(jìn)程的CPU飆升到700%多,且一直降不下來,很顯然出現(xiàn)了問題。

二、使用top -Hp命令定位線程

使用 top -Hp <pid> 命令(為Java進(jìn)程的id號)查看該Java進(jìn)程內(nèi)所有線程的資源占用情況

top -Hp 29706
java進(jìn)程cpu使用率高排查,Linux,linux,運(yùn)維,Powered by 金山文檔

很容易發(fā)現(xiàn),多個線程的CPU占用達(dá)到了90%多。我們挑選線程號為30309的線程繼續(xù)分析。

三、使用jstack命令定位代碼

1.線程號轉(zhuǎn)換為16進(jìn)制

printf “%x\n” 命令(tid指線程的id號)將以上10進(jìn)制的線程號轉(zhuǎn)換為16進(jìn)制:

printf "%x\n"  30309
java進(jìn)程cpu使用率高排查,Linux,linux,運(yùn)維,Powered by 金山文檔

轉(zhuǎn)換后的結(jié)果分別為7665,由于導(dǎo)出的線程快照中線程的nid是16進(jìn)制的,而16進(jìn)制以0x開頭,所以對應(yīng)的16進(jìn)制的線程號nid為0x7665

2.采用jstack命令導(dǎo)出線程快照

通過使用dk自帶命令jstack獲取該java進(jìn)程的線程快照并輸入到文件中: jstack -l > ./jstack_result.txt 命令(為Java進(jìn)程的id號)來獲取線程快照結(jié)果并輸入到指定文件。

jstack -l 29706 > ./jstack_result.txt

3.根據(jù)線程號定位具體代碼

在jstack_result.txt 文件中根據(jù)線程好nid搜索對應(yīng)的線程描述

cat jstack_result.txt |grep -A 100  7665
java進(jìn)程cpu使用率高排查,Linux,linux,運(yùn)維,Powered by 金山文檔

根據(jù)搜索結(jié)果,判斷應(yīng)該是ImageConverter.run()方法中的代碼出現(xiàn)問題

也可以直接采用jstack <pid> |grep -A 200 <nid>來定位具體代碼

jstack 29706 |grep -A 200 7665

"System Clock" #28 daemon prio=5 os_prio=0 tid=0x00007efc19e8e800 nid=0xae24 waiting on condition [0x00007efbe0d91000]

java.lang.Thread.State: TIMED_WAITING (sleeping)

at java.lang.Thread.sleep(Native Method)

at java.lang.Thread.sleep(Thread.java:340)

at java.util.concurrentC.TimeUnit.sleep(TimeUnit.java:386)

at com.*.order.Controller.OrderController.detail(OrderController.java:37) //業(yè)務(wù)代碼阻塞點(diǎn)

4.總結(jié)

CPU飆升問題定位的一般步驟是:

1.首先通過top指令查看當(dāng)前占用CPU較高的進(jìn)程PID;

2.查看當(dāng)前進(jìn)程消耗資源的線程PID: top -Hp PID

3.通過print命令將線程PID轉(zhuǎn)為16進(jìn)制,根據(jù)該16進(jìn)制值去打印的堆棧日志內(nèi)查詢,查看該線程所駐留的方法位置。

4.通過jstack命令,查看棧信息,定位到線程對應(yīng)的具體代碼。

5.分析代碼解決問題。文章來源地址http://www.zghlxwxcb.cn/news/detail-629698.html

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

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

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

相關(guān)文章

  • Java線上服務(wù)CPU、內(nèi)存飆升問題排查步驟!

    Java線上服務(wù)CPU、內(nèi)存飆升問題排查步驟!

    作為一名從事Java開發(fā)快一年的程序員,在線上經(jīng)常碰到 某個模塊的Pod發(fā)出CPU與內(nèi)存告警的問題 ,而這些問題會導(dǎo)致系統(tǒng)響應(yīng)緩慢甚至是服務(wù)不可用。一般情況下可以通過 重啟 或者 調(diào)高Pod的資源量或者增加Pod數(shù)量 暫時解決問題,但這是治標(biāo)不治本的,只有找到問題發(fā)生的原

    2024年02月16日
    瀏覽(48)
  • Java線上CPU內(nèi)存沖高問題排查步驟

    Java線上CPU內(nèi)存沖高問題排查步驟

    作為一名從事Java開發(fā)快一年的程序員,在線上經(jīng)常碰到 某個模塊的Pod發(fā)出CPU與內(nèi)存告警的問題 ,而這些問題會導(dǎo)致系統(tǒng)響應(yīng)緩慢甚至是服務(wù)不可用。一般情況下可以通過 重啟 或者 調(diào)高Pod的資源量或者增加Pod數(shù)量 暫時解決問題,但這是治標(biāo)不治本的,只有找到問題發(fā)生的原

    2024年02月07日
    瀏覽(16)
  • Java CPU或內(nèi)存使用率過高問題定位教程

    Java CPU或內(nèi)存使用率過高問題定位教程

    Spring cloud微服務(wù)廣泛應(yīng)用后,服務(wù)的監(jiān)控和運(yùn)維壓力也與日俱增,經(jīng)常有服務(wù)出現(xiàn)CPU或者內(nèi)存使用率過高的告警,那么遇到這樣的問題我們該如何排查呢?我們可以借助哪些工具來定位問題呢?本文將介紹一下遇到此類問題的解決思路和方法。 1.通過應(yīng)用日志定位思路 對于業(yè)

    2024年03月28日
    瀏覽(30)
  • java獲取系統(tǒng)CPU和內(nèi)存使用率的三種方法

    獲取系統(tǒng)CPU和內(nèi)存的三種方法: 1、使用OperatingSystemMXBean獲取 2、使用sigar方法獲取 3、使用oshi方法獲取 以下是我在我的機(jī)子上對三種方法測試的比較 方法?? ?準(zhǔn)確率 OperatingSystemMXBean?? ?獲取的內(nèi)存數(shù)據(jù)準(zhǔn)確,CPU差距有點(diǎn)大 sigar?? ?獲取的內(nèi)存數(shù)據(jù)稍微有點(diǎn)差距,CPU相對

    2024年04月13日
    瀏覽(24)
  • linux top命令中 cpu 利用率/mem 使用率與load average平均負(fù)載計(jì)算方式

    top 命令是 Linux 上一個常用的系統(tǒng)監(jiān)控工具,它經(jīng)常用來監(jiān)控 Linux 的系統(tǒng)狀態(tài),是常用的性能分析工具,能夠顯示較全的系統(tǒng)資源信息,包括系統(tǒng)負(fù)載,CPU 利用分布情況,內(nèi)存使用,進(jìn)程資源占用情況等。 如下示例: 這里主要看進(jìn)程的 CPU%, MEM% 和 load averge 字段。 該字段指

    2024年02月03日
    瀏覽(27)
  • java 程序cpu占用過高排查

    java 程序cpu占用過高排查

    取得cpu占用最高的PID:?27791 方式一 cgroup 如果輸出中包含有類似 /docker/container_id 的字符串,就表示該進(jìn)程在 Docker 容器中。 方式二 lsns ? lsns命令查看程序的命名空間? ,如果顯示的命名空間信息中有 ipc , mnt , net , pid , user , uts ,那么該 PID 很可能在一個 Docker 容器中。 方式三

    2024年02月07日
    瀏覽(24)
  • java 應(yīng)用cpu飆升(超過100%)故障排查

    java 應(yīng)用cpu飆升(超過100%)故障排查

    害。。。 昨天剛寫完一份關(guān)于jvm問題排查相關(guān)的博客,今天線上項(xiàng)目就遇到了一個突發(fā)問題。 現(xiàn)象是用戶反映系統(tǒng)非???,無法操作。 然后登錄服務(wù)器查看發(fā)現(xiàn)cpu 一直100%以上。 發(fā)現(xiàn)線上pid 29737的 java應(yīng)用cpu達(dá)到100% 輸入上述命令,然后按H顯示cpu最高排名的線程??梢钥吹?/p>

    2023年04月26日
    瀏覽(35)
  • cpu load與cpu使用率與線程的5種狀態(tài)

    cpu load值是正在運(yùn)行和就緒等待狀態(tài)線程數(shù)之和。 load越大,說明線程競爭時間片越激烈,線程等待隊(duì)列越長。 對于8核系統(tǒng),如果load為10,說明8個線程正在執(zhí)行,2個線程等待時間片。 cpu利用率 load越大,cpu使用率越高嗎? 不一定,如果線程是執(zhí)行IO這種,線程拿到時間片后

    2024年02月01日
    瀏覽(18)
  • Java應(yīng)用CPU占用過高問題排查

    測試環(huán)境CPU突然升高,日志查詢無異常,可以通過使用jvm的調(diào)試工具定位問題。 1.定位java服務(wù)進(jìn)程 2.定位java線程 3.定位代碼塊 1.定位進(jìn)程 獲取cpu占用高的進(jìn)程pid 2.定位線程 轉(zhuǎn)16進(jìn)制 3.定位代碼 目的:將當(dāng)前堆棧信息保存為文件,通過16進(jìn)制的TID查找問題所在的代碼塊;

    2024年02月12日
    瀏覽(22)
  • 【Java】 服務(wù)器cpu過高如何排查和解決?

    【Java】 服務(wù)器cpu過高如何排查和解決?

    對于互聯(lián)網(wǎng)公司,線上CPU飆升的問題很常見(例如某個活動開始,流量突然飆升時),按照本文的步驟排查,基本1分鐘即可搞定!特此整理排查方法一篇,供大家參考討論提高。 線上系統(tǒng)突然運(yùn)行緩慢,CPU飆升,甚至到100%,以及Full GC次數(shù)過多,接著就是各種報警:例如接口

    2024年02月11日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包