记一次TOMCAT开启一段时间自动关闭

最近同事开发的一个项目部署上线后用过几天就TOMCAT自动关闭,并且该项目没有开通对外访问。通过阿里云监控台查看,从升级后系统内存占用上升趋势,CPU等信息没有太大变化。
打印服务器日志后发现全是线程日志。并且过一段时间后会发现停留大日志里的线程数逐步增加,通过命令定时查看服务器观察应用线程数,按时间在递增。综合以上分析初步定位是开启线程数多没有关闭导致程序占用系统内存多从而TOMCAT关闭。
记一次TOMCAT开启一段时间自动关闭
文章图片

top --查看JAVA线程IDtop -Hp pid -d 1 -n 1--查看当前的较高的线程jstack 28174 > dump.txt --打印日志

记一次TOMCAT开启一段时间自动关闭
文章图片

ps huH ppid| wc -l-- 发现每隔1分钟线程数一直在增加。

按日志查到程序使用线程情况,并且全文搜索程序使用线程的方法,再接合开发的同事提供的信息,定位问题。
记一次TOMCAT开启一段时间自动关闭
文章图片


优化后:
记一次TOMCAT开启一段时间自动关闭
文章图片


优化上线后再观察线程数正常。
【记一次TOMCAT开启一段时间自动关闭】分析:使用ScheduledExecutorService启动线程时一定要关闭。

    推荐阅读