windows系統下排查Java項目cpu過高原因


問題描述:

  我們公司是java做服務端,做的電腦客戶端軟件,最近一次更新,測試時發現之前cpu一直是在4-5使用率,新版本有時會飆升到30%~40%,肯定是存在問題

使用工具:

 步驟1:定位項目進程

    打開任務管理

 

 

  步驟2:使用jdk自帶的一個jstack命令導出線程日志

      命令: jstack 88400 > D:/jstack/cc.log   88400:任務管理里的項目PID,右側是將進程保存到本地,供后續排查問題

    

 

    注意:

    1、文件夾要先創建好,

    2、如果出現拒絕訪問,則需要使用管理員身份運行cmd

    

       3、如果出現jstack不是內部或外部命令,則說明jdk的環境變量設置有問題,在這就不多說了

  步驟3:使用Process Explorer工具,下載地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer

  找到步驟一中的PID對應的進程,右鍵Properties...選項

 

   找到CPU使用率高的TID,通過jstack工具導出的信息中線程TID是十六進制的,需要轉換進制

 

 將16進制到之前導出的線程記錄文件中查詢,可以看到我自定義的線程名以及代碼位置,可以追蹤到具體業務邏輯進行排查問題

 

  我之前的問題是開了線程池處理一個隊列里的數據,當隊列無數據時沒有休眠等待,導致線程一直再跑,CPU飆升。

 

 

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM