jvm線程數(shù)不斷增加問題排查

線上發(fā)生java.lang.OutOfMemoryError: unable to create new native thread,排查思路。

1.進(jìn)入docker容器內(nèi)部

docker exec -it node-ftmp bash

2.導(dǎo)出線程dump文件

jstack -l <pid>  > threadDump.txt

jstack -l 19  > threadDump.txt

3.退出docker環(huán)境

exit

4.拷貝dump文件到宿主機(jī)

docker cp node-ftmp:/home/fssc/node-FTMP/threadDump.txt  /home
  1. 下載到本地分析
    threadDump.txt文件有5M多,一行一行看不方便。上工具 IBM JCA
    https://www.ibm.com/support/pages/ibm-thread-and-monitor-dump-analyzer-java-tmda
image.png
  1. 有5000多個(gè)線程為parked狀態(tài),說明代碼中有大量的空閑線程。
    我們可以在這個(gè)界面查看每一個(gè)線程的情況。


    image.png

7.幾個(gè)小時(shí)候又下載了一份線程dump文件,對比兩次線程數(shù)量


image.png
  1. 發(fā)現(xiàn)以pool-為前綴的線程,增加較多,應(yīng)該是線程池產(chǎn)生線程沒有正常關(guān)閉銷毀導(dǎo)致。后面就可以去分析代碼了。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容