一次使用JDK自帶jstack分析線程數過大的經歷

      之前有寫到過modbus的協議空調面板控制,經歷了去年冬天的考驗,還算勉強合格。這次客戶反饋CPU佔用高,線程數比較大。

一、現象說明

        這邊前置機在局域網跑modbus項目,通過與控制局域網內網關通訊,走modbus協議控制空調面板。用的時tomcat9跑項目,然後加到了服務裏。這裏使用系統自帶的資源管理器查看線程數情況。

     看到沒,進程數1510,有點大啊。

二、使用JDK自帶工具分析原因

      不得不說JAVA真的是牛啊,縱然JDK收費,我也愛它。我這裏使用的是免費的最高版本1.8。

     首先說明cmd命令框需要以管理員身份運行,否則報錯,如圖:

     

    這裏的1848是pid進程號。

    以管理員身份運行cmd框後,因爲不想在黑框框裏看,想保存爲文件查看,所以使用

 jstack -F -l 1848 >> 路徑\文件名,

我這裏保存爲txt,即文件名1111.txt。如圖:

文件名出來後,可以看到好多線程阻塞,BLOCKED就是阻塞的意思。

然後,還會打印出阻塞的代碼行。到此原因就定位到了。馬上要下大雨了,老婆在催回家,明天來分析代碼。這個代碼大致看了下是老外寫的,modbus的相關:

分析記過是指向這一行的。明天繼續。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章