国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java程序CPU高占用問題實戰分享

IT那活兒 / 678人閱讀
Java程序CPU高占用問題實戰分享

點擊上方“IT那活兒”公眾號,關注后了解更多內容,不管IT什么活兒,干就完了!!!


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

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

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

總 結

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




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

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129244.html

相關文章

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

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

    dingding199389 評論0 收藏0
  • 實戰java并發程序設計第一章

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

    moven_j 評論0 收藏0
  • 記一次PHP并發性能調優實戰 -- 性能提升104%

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

    番茄西紅柿 評論0 收藏0
  • 記一次PHP并發性能調優實戰 -- 性能提升104%

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

    xeblog 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

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