服务器内存优化:从 9GB 可用到稳定运行

509GB RAM 的服务器,只有 9GB 可用,Swap 为 0,共享内存 163GB。更糟的是,OOM Killer 曾经杀掉了 MySQL 进程(占用 ~142GB RAM)。

问题分析

通过 free -hsmem -t -k 排查,发现几个主要问题:

  • MySQL 的 innodb_buffer_pool_size 配置过大
  • 大量共享内存被 PostgreSQL 的 shared_buffers 占用
  • 没有配置 Swap 作为安全网

优化措施

  1. 将 MySQL buffer pool 从 128GB 降到 64GB
  2. PostgreSQL shared_buffers 从 16GB 降到 8GB
  3. 创建 32GB Swap 文件作为安全网
  4. 配置 vm.swappiness=10 减少不必要的换出

结果

优化后可用内存稳定在 200GB+,Swap 几乎不使用,OOM Killer 不再触发。