记录一次time-waiting线程过多的排查(原因查找中)
问题描述:
生产环境中运行的tomcat莫名会出现服务宕机。宕机时请求无法访问,服务器tomcat控制台无任何打印,日志记录直接停止。重启后恢复。
后持续观察,发现tomcat的线程数每次上升,回落幅度都很小,最后导致总体线程数一直在增加。通过java工具查看线程,发现其中一个进程最多,经查看里面有 Thread.sleep(3000); 的方法。
目前通过资料确认,sleep确实是产生time-waiting状态线程的条件之一,但此状态线程到时间后会自动释放,目前不知道为什么没有释放线程,导致线程数一直在上涨。
有熟悉的大神,给解答下吗?
26日:添加日志发现,sleep在重复执行,循环未跳出。确定代码问题。
补充:使用查看线程工具: