You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04.2 LTS中MariaDB被oom-kill终止,求可行解决方案

MariaDB被OOM-kill终止的解决办法

1. 确认内存使用情况

先排查系统内存状态及OOM触发细节:

  • 查看当前内存与swap占用:
    free -h
    
  • 实时监控内存使用:
    htop
    
  • 查看系统OOM杀手日志,确认MariaDB被终止时的内存环境:
    journalctl -k | grep -i oom
    

2. 调整MariaDB内存配置(核心解决方法)

默认配置可能超出系统可用内存,针对性修改配置文件:

  1. 打开MariaDB主配置文件(通常路径):
    nano /etc/mysql/mariadb.conf.d/50-server.cnf
    
  2. 根据系统内存修改关键参数(示例针对2G内存服务器):
    • innodb_buffer_pool_size = 1G(建议设为物理内存的50%-70%,不超过总内存80%)
    • max_connections = 80(减少冗余连接,避免内存过度占用)
    • tmp_table_size = 64M
    • max_heap_table_size = 64M
    • 无需查询缓存时设置 query_cache_size = 0(新版本已废弃该功能)
  3. 保存配置后重启服务:
    systemctl restart mariadb
    

3. 设置OOM优先级,避免MariaDB被优先终止

通过systemd调整进程OOM分数,降低被系统查杀的优先级:

  1. 编辑MariaDB服务配置:
    systemctl edit mariadb.service
    
  2. 在编辑器中添加:
    [Service]
    OOMScoreAdjust=-1000
    
  3. 重新加载配置并重启服务:
    systemctl daemon-reload
    systemctl restart mariadb
    

4. 排查异常查询与连接泄漏

内存耗尽可能由低效查询或连接泄漏导致:

  • 登录MariaDB查看当前进程:
    SHOW PROCESSLIST;
    
    定位长时间运行、资源占用高的查询,优化或终止它们。
  • 开启慢查询日志定位低效SQL:
    在配置文件中添加以下内容后重启服务:
    slow_query_log = 1
    slow_query_log_file = /var/log/mysql/slow.log
    long_query_time = 2
    
    分析慢日志,优化SQL语句或添加索引。

5. 扩展系统内存(终极方案)

若上述调整仍频繁触发OOM,考虑扩展系统内存:

  • 增加物理内存(最有效)
  • 配置swap交换空间(临时缓解):
    # 创建2G swap文件
    fallocate -l 2G /swapfile
    chmod 600 /swapfile
    mkswap /swapfile
    swapon /swapfile
    
    编辑/etc/fstab添加以下内容,让swap永久生效:
    /swapfile none swap sw 0 0
    

内容的提问来源于stack exchange,提问作者Pooja Yadav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:52:50