记录一次堆外内存溢出
注:其实问题并不是由我排查的,只是想记一下思路,来推动自己的进步
# 问题描述:
一个使用kafka进行流处理的项目不断发生 oom 被系统kill掉的情况
# 分析排查
1. 刚开始的时候项目启动时并没有指定初始堆内存,先假设是因为堆内存使用过大导致系统内存使用100%而被kill掉
问题1尝试解决:
1. 指定初始堆内存的大小,假设为1G, 分析堆内存的使用,发现仍然过一段时间后会被系统kill掉,排除是因为堆内存溢出的原因
2. 堆外内存,使用 gperftools 来进行分析(具体使用网上有很多教程),发现是kafka的某些版本的gzip模块会导致该问题
# 解决:
kafka版本更新等方案,有能力可以去修改kafka的代码