分析佔用了大量 CPU 處理時間的是Java 進程中哪個線程

下面是詳細步驟:


1. 首先確定進程的 ID ,可以使用 jps -v 或者 top 命令直接查看


2. 查看該進程中哪個線程佔用大量 CPU,執行 top -H -p [PID] 結果如下:


cpu100.jpeg

可以發現編號爲 350xx 的共有 9 個線程佔用了 100% 的 CPU,好,接下來咱們隨便取一個線程 ID ,假設我們想看編號爲 35053 這個線程。


首先將 35053 轉成 16 進制是 88ED (可以用開源中國在線工具轉換)


3. 接下來我們將進程中的所有線程輸出到一個文件中,執行:jstack [PID] > jstack.txt


4. 在進程中查找對應的線程 ID,執行:cat jstack.txt | grep -i 88ED


結果是:


"HTTP Request From : /xxxx/blog/323432(120.27.143.239)" #266 daemon prio=5 os_prio=0 tid=0x00007fcda4146800 nid=0x88e runnable [0x00007fcd54178000]

由此可以看出在請求 /xxxx/blog/323432 鏈接的時候,服務器的處理線程佔用了 100% 的 CPU。



原文地址:分析佔用了大量 CPU 處理時間的是Java 進程中哪個線程
標籤:java   cup100%   線程   

智能推薦

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