centos系统排查出现大量线程的问题
1.知道对应的进程ID
在终端执行指令: ps -o nlwp --no-headers PID

代表当前进程下有6003个线程。
2.生成堆栈日志
jstack -l 16637 > jstack.$(date +%Y%m%d%H%M%S).log
3. 分析线程快照日志
grep "java.lang.Thread.State" jstack.20231027103000.log | sort | uniq -c
-
RUNNABLE: 正在运行或准备运行。 -
WAITING(on object monitor): 等待被其他线程唤醒(通常调用Object.wait())。 -
TIMED_WAITING(sleeping): 限时等待(例如Thread.sleep(),Object.wait(timeout))。 -
BLOCKED: 等待获取一个锁以进入同步块。

4. 查询 TIMED_WAITING (on object monitor) 对应日志数据
grep -B 1 "TIMED_WAITING (on object monitor)" jstackmini.20250819192806.log
5. 找出问题关键点

hello world!!!

浙公网安备 33010602011771号