加拿大服务器内存泄漏/OOM 怎么办?6 步排查与优化
发布时间:2026-10-15
问题一:频繁 OOM 杀进程
- 排查:
dmesg | grep -i oom+free -h。 - 修复:加 swap,调小 Java -Xmx、PHP memory_limit。
问题二:Java 内存泄漏
- 排查:
jstat -gc+jmap -dump堆分析。 - 修复:MAT 分析泄漏点,设 -Xmx 上限。
问题三:PHP-FPM 占满内存
- 排查:
ps aux | grep php-fpm | awk '{sum+=$6}。 - 修复:调小 pm.max_children,设 pm.max_requests=500。
问题四:MySQL 内存溢出
- 排查:计算 max memory = buffer_pool + 连接数 × buffer。
- 修复:调小 innodb_buffer_pool_size(物理内存 50–70%)。
问题五:Redis 内存打满
- 排查:
redis-cli info memory+--bigkeys。 - 修复:设 maxmemory-policy allkeys-lru,所有 key 加 TTL。
问题六:如何预防?
- 监控内存 >85% 告警。
- systemd MemoryMax 限制。
- 所有进程内存总和 ≤ 物理内存 70–80%。