生产环境出现大量空闲线程排查

2017-12-27  本文已影响0人  blueSkyBird

通过JVM堆栈出现大量WAITING线程的原因。

 grep java.lang.Thread.State dump | awk '{print $2$3$4$5}' | sort | uniq -c

命令查看线程状态分类

image.png

最后排查到两个问题。

  1. 每个模块都自己新建自己的线程池,线程池创建不合理,导致空闲线程比较多
  2. 在代码中使用ExecutorService提交线程任务后,未关闭。

总结:

  1. 线程池这种底层资源的提供,没有特殊情况下应该统一提供。而不是每个模块都自己来新建个线程池。
  2. 需要合理配置线程池。
  3. 创建线程池或者新启动线程时,最好给线程起个名字,这样出现问题好定位

配置线程池的策略:

上一篇下一篇

猜你喜欢

热点阅读