温馨提示×

centos mysql内存使用过高怎么办

小樊
44
2025-08-10 10:28:28
栏目: 云计算

  1. 优化MySQL配置

    • 修改/etc/my.cnf,调整关键参数:
      • innodb_buffer_pool_size:设置为系统总内存的50%-80%(如innodb_buffer_pool_size=4G),这是内存主要消耗项。
      • tmp_table_size/max_heap_table_size:限制临时表内存(如256M),避免大查询占用过多内存。
      • 关闭查询缓存(MySQL 8.0已默认禁用,旧版本可设为0)。
    • 重启MySQL生效:systemctl restart mysqld
  2. 优化查询与索引

    • 使用EXPLAIN分析慢查询,添加索引避免全表扫描。
    • 限制结果集大小(LIMIT),避免SELECT *
    • 定期优化表:OPTIMIZE TABLE
  3. 系统级优化

    • 关闭透明大页(THP)
      echo never > /sys/kernel/mm/transparent_hugepage/enabled  
      echo never > /sys/kernel/mm/transparent_hugepage/defrag  
      
      (永久生效需添加到/etc/rc.local)。
    • 监控内存使用:通过tophtoppmap查看mysqld进程内存占用,重点关注RES(物理内存)。
  4. 硬件与架构优化

    • 增加物理内存,尤其适用于高负载场景。
    • 将MySQL临时文件目录(tmpdir)指向高速存储(如SSD)。

注意:修改配置前需备份数据,建议在测试环境验证后再应用到生产环境。

0