亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Java程序CPU高占用問題實戰(zhàn)分享

IT那活兒 / 745人閱讀
Java程序CPU高占用問題實戰(zhàn)分享

點擊上方“IT那活兒”公眾號,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!


  
對于作為服務(wù)器算力的核心部件CPU來說,異常高的占用會影響服務(wù)的正常運行。
某個Java應(yīng)用占用過高CPU,如果不是程序過于復雜需要優(yōu)化,則可能是程序邏輯有問題,那么如何根據(jù)CPU高占用的現(xiàn)象排查程序問題,接下來通過實際案例來演示。

案例一
1. top命令定位CPU高占用Java進程PID.
2. 再使用top -Hp 4315查看該進程下各個線程的cpu使用情況,4315是步驟1中高CPU占用的進程號PID,可觀察到前10個線程的CPU占用異常高.
3. 選取步驟2中的一個線程進行分析,需要對其線程號進行進制轉(zhuǎn)換,方便下一步查找.
4. 使用jstack查詢具體線程狀態(tài).
Jstack 4315 | grep 0x10fd -A 30
可查看線程狀態(tài)查找關(guān)鍵字向下30行內(nèi)容,可看到線程狀態(tài)為RUNNABLE,根據(jù)下列內(nèi)容定位到代碼ThreadTestWhile.java第15行。
5. 查看代碼邏輯,第15行為死循環(huán),就是它導致了線程一直在運行,占用了過高CPU資源,修改該死循環(huán)即可解決問題.

案例二
1. 另外一種情況是可能線程占用資源不是很多,但線程數(shù)量過多,海量線程數(shù)累計占用了過多資源導致CPU過高,同樣使用top命令定位問題進程.
2. 再通過top -Hp 11159查看到異常線程.
3. 選取11183線程進行進制轉(zhuǎn)換.
4. 使用jstack 11159 | grep 0x2baf -A 30查看到該線程狀態(tài)為WATTING,過多的等待狀態(tài)線程可能是代碼中鎖了資源導致線程一直處于等待狀態(tài).
5. 本案例代碼中是使用了suspend()方法掛起線程,又沒有恢復導致的多線程等待,在程序設(shè)計時需要注意避免死鎖的產(chǎn)生.

總 結(jié)

1. 使用top -Hp 定位進程中占用CPU最高的線程,并結(jié)合jstack獲取線程快照進行分析,如果線程是VM Thread,則應(yīng)該監(jiān)控檢查垃圾回收活動頻率,看是否是因為頻繁進行垃圾回收導致的。
2. Java高占用CPU通常原因都是出現(xiàn)了死循環(huán),通過如上方法可以輕易定位到問題,另外空循環(huán)會導致間歇性CPU過高,案例一中top的CPU高占用就呈現(xiàn)出間歇性特點。
3. 代碼邏輯處理不當可能會導致堆內(nèi)存無法及時回收導致內(nèi)存泄漏引起CPU飆升,可結(jié)合內(nèi)存進行問題定位。




本文作者:史鴻杰(上海新炬王翦團隊)

本文來源:“IT那活兒”公眾號

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/129244.html

相關(guān)文章

  • Java多線程學習(七)并發(fā)編程中一些問題

    摘要:相比與其他操作系統(tǒng)包括其他類系統(tǒng)有很多的優(yōu)點,其中有一項就是,其上下文切換和模式切換的時間消耗非常少。因為多線程競爭鎖時會引起上下文切換。減少線程的使用。很多編程語言中都有協(xié)程。所以如何避免死鎖的產(chǎn)生,在我們使用并發(fā)編程時至關(guān)重要。 系列文章傳送門: Java多線程學習(一)Java多線程入門 Java多線程學習(二)synchronized關(guān)鍵字(1) java多線程學習(二)syn...

    dingding199389 評論0 收藏0
  • 實戰(zhàn)java并發(fā)程序設(shè)計第一章

    摘要:通過指令重排可以減少流水線停頓提升巨大效率原則程序順序原則一個線程內(nèi)保證語義的串行性。鎖規(guī)則解鎖必然發(fā)生在隨后的加鎖前。線程的方法先于它的每一個動作。 1. 基本概念 同步(Synchronous)和異步(Asynchronous) 并發(fā)(Conncurrency)和并行(Parallelism) 臨界區(qū) 阻塞(Blocking)與非阻塞(Non-Blocking) 死鎖(Deadl...

    moven_j 評論0 收藏0
  • 記一次PHP并發(fā)性能調(diào)優(yōu)實戰(zhàn) -- 性能提升104%

    摘要:這是多處理器系統(tǒng)中,調(diào)度器用來分散任務(wù)到不同的機制,通常也被稱為處理器間中斷,。文章編寫計劃 待完成: 詳細介紹用到的各個工具 作者: 萬千鈞(祝星) 適合閱讀人群 文中的調(diào)優(yōu)思路無論是php, java, 還是其他任何語言都是用. 如果你有php使用經(jīng)驗, 那肯定就更好了 業(yè)務(wù)背景 框架及相應(yīng)環(huán)境 laravel5.7, mysql5.7, redis5, nginx1.15 cento...

    番茄西紅柿 評論0 收藏0
  • 記一次PHP并發(fā)性能調(diào)優(yōu)實戰(zhàn) -- 性能提升104%

    摘要:這是多處理器系統(tǒng)中,調(diào)度器用來分散任務(wù)到不同的機制,通常也被稱為處理器間中斷,。文章編寫計劃 待完成: 詳細介紹用到的各個工具 作者: 萬千鈞(祝星) 適合閱讀人群 文中的調(diào)優(yōu)思路無論是php, java, 還是其他任何語言都是用. 如果你有php使用經(jīng)驗, 那肯定就更好了 業(yè)務(wù)背景 框架及相應(yīng)環(huán)境 laravel5.7, mysql5.7, redis5, nginx1.15 cento...

    xeblog 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<