内存泄漏[OOM]
容器类使用不当,导致对象无限增加。
线程泄漏
修复前后对比,正常情况下100-200个线程之间就足够了。
通过命令快速查看进程的线程数量 , ps hH p <pid> | wc -l,这个命令查看一个进程(用H选项)的线程数
for i in `ps aux | grep -v grep | grep java | awk '{print $2}'` ; do echo $i "-->" `ps hH p $i | wc -l` ; done
81109 --> 29
81112 --> 22
166924 --> 43
176107 --> 153
176109 --> 148
连接泄漏
JDBC4PreparedStatement对象没有关闭,连接泄漏同时也会OOM
并发设置不合理
并发设置过大导致线程数高居不下,上下文切换成本较大。
组件并发设置不合理,导致worker CPU使用率偏差较大,影响任务的稳定。
不合理日志输出
日志太多,很容易把磁盘写爆。
下游系统故障
mysql IO问题,导致数据囤积在worker中会触发频繁的GC。