一次因线程池使用不当造成生产事故OOM
美好的一天从bug结束

某日当我点开熟悉的界面,一个又一个请求失败的提示赫然出现在屏幕上,不会是昨晚上线的代码有问题吧?

吓得我急忙按F12查看了响应——"exception":"java.lang.OutOfMemoryError","message":"unable to create new native thread"

出现了内存溢出的情况,无法创建更多的本地线程。

监控中显端倪

接着查看了实例的监控大盘,发现每个实例的JVM线程数量都处于9000+的规模,且还有上涨的趋势。

这是其中一个实例的线程数量监控图:

10.17日出现下降,并不是由于GC,而是由于上线,所以会降到0。

当前服务一共有8个实例,临时的方案是从负载均衡中摘除1个节点,用作排查使用,其他实例则按照顺序进行原地重建。

dump线程日志

登录上这个容器,使用