整理大阪服务器内存泄漏导致 OOM 与进程被杀的排查实战。
内存泄漏会逐渐拖垮服务。以下是实战。
一、确认现象 - 内存持续上升不释放 - 进程被 OOM Killer 杀掉 - 服务周期性重启
二、定位 1) free -h 看整体内存与 swap 2) top/htop 按内存排序看进程 3) /proc/<pid>/status 看进程内存明细 4) dmesg 查看 OOM 记录 5) pmap 查看进程内存映射
三、常见原因 1) 应用对象或缓存无上限 2) 连接或文件句柄未释放 3) 大量小对象碎片 4) 第三方库缺陷 5) 日志或队列堆积
四、处理 - 给缓存设置上限与淘汰 - 修复资源未释放 - 升级有缺陷的依赖 - 限制队列与日志大小 - 临时增加内存或 swap 争取时间
五、优化 1) 内存监控与告警 2) 定期重启兜底 3) 使用内存分析工具定位 4) 压测复现
六、预防 - 上线前做内存压测 - 监控 RSS 增长趋势 - 代码审查关注资源释放
总结:内存泄漏要先用 top 与 dmesg 定位,再从缓存、资源释放和依赖逐项修复。