centos系统排查出现大量线程的问题

1.知道对应的进程ID

在终端执行指令:
ps -o nlwp --no-headers  PID

image

 代表当前进程下有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: 等待获取一个锁以进入同步块。

  

image

 4. 查询 TIMED_WAITING (on object monitor) 对应日志数据

grep -B 1 "TIMED_WAITING (on object monitor)" jstackmini.20250819192806.log

5. 找出问题关键点

image

 

  

 

posted @ 2025-08-20 19:09  低调的小白  阅读(7)  评论(0)    收藏  举报