整理雅加达服务器内存溢出(OOM)导致服务被杀的排查实战。
OOM 会导致服务被系统杀掉。以下是实战。
一、确认现象 - 服务不定期重启 - dmesg 出现 OOM Killer 记录 - 内存曲线持续上升
二、定位 1) 查看 dmesg 的 OOM 记录 2) ps/top 按内存排序找进程 3) 观察内存是否单向增长 4) 分析堆内存与缓存占用
三、常见原因 1) 内存泄漏 2) 缓存无上限 3) 并发过高导致堆积 4) JVM/运行时堆配置不当 5) 大量大对象
四、处理 - 定位并修复泄漏 - 为缓存设置上限与淘汰 - 限制并发与队列长度 - 合理设置堆与堆外内存 - 临时加内存缓解
五、优化 1) 内存监控与告警 2) 定期滚动重启 3) 压测与分析
六、预防 - 上线前内存压测 - 代码审查资源释放 - 容量规划
总结:OOM 要先看 dmesg 与内存曲线定位,再从泄漏、缓存上限、并发与堆配置优化。