mysql 内存耗尽/OOM Kill

  1. 确认是否是 OOM Kill
    dmesg | grep -i "killed process" grep -i "oom" /var/log/messages
  2. 查看内存消耗来源
    -- InnoDB Buffer Pool SHOW VARIABLES LIKE 'innodb_buffer_pool_size'; -- 每连接内存 SHOW VARIABLES LIKE 'sort_buffer_size'; SHOW VARIABLES LIKE 'join_buffer_size'; SHOW VARIABLES LIKE 'read_buffer_size'; -- 当前连接数 SHOW STATUS LIKE 'Threads_connected';
  3. 临时降低缓冲池大小(在线)
    -- MySQL 5.7+ 支持在线调整(会有短暂抖动) SET GLOBAL innodb_buffer_pool_size = 2*1024*1024*1024; -- 2GB
[mysqld] innodb_buffer_pool_size = 5G # 物理内存 60~70% innodb_log_buffer_size = 64M sort_buffer_size = 1M # 每连接,不要过大 join_buffer_size = 1M read_buffer_size = 512K max_connections = 200 # 200 * (1+1+0.5+0.5)M ≈ 600MB
上一篇 网工大神救救我呀?
下一篇 链动2+1模式系统(升级版)