通過Arthas排查Java程序CPU佔用過高問題

通過Arthas排查Java程序CPU佔用過高問題

需要工具包:arthas-packaging-3.2.0-bin.zip

模擬問題

使用如下代碼製造一個CPU佔用100%的情況

 /**
     * 製造一個死循環,實現cpu100%
     */
    @RequestMapping("/lock")
    public void lock(){
        System.out.println("開始死鎖操作。。。。");
        StringBuffer stringBuffer = new StringBuffer();
        while(true){
            String uuid = UUID.randomUUID().toString();
        }
    }

在這裏插入圖片描述

這是一個SpringBoot的應用,通過使用命令curl http://xxx:xxx/lock,即可觸發

排查步驟

  • 上傳arthas-packaging-3.2.0-bin.zip到服務器,創建目錄arthas並將zip包拷貝到該目錄下,解壓

  • 使用top命令,查看當前CPU的情況,記錄下佔用率最高的進程pid

在這裏插入圖片描述

  • 下記錄下cpu佔用過高的pid(本例中是2864)

  • 執行java -jar arthas-boot.jar

在這裏插入圖片描述

  • 輸入1(序號),根據實際情況選擇對應的序號,會進入arthas命令行的執行程序中

在這裏插入圖片描述

  • 輸入thread -n 3會列舉出當前三個佔用CPU最高的線程,根據圖中可以定位到具體的業務代碼行數

在這裏插入圖片描述

  • 除此之外,也可以使用dashboard命令查看當前的Java程序運行情況

在這裏插入圖片描述

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