内存泄漏[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。

本文探讨了内存泄漏、线程泄漏、连接泄漏等问题,并分析了并发设置不合理、日志输出过多及下游系统故障等常见场景下对系统资源的影响。
916

被折叠的 条评论
为什么被折叠?



