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

主机内核杀死mysql:5.6容器问题求助(Manjaro Linux)

解决MySQL 5.6容器因OOM被内核杀死的问题
  • 调整MySQL内存配置
    MySQL 5.6默认内存配置对容器环境不友好,容易占用过量内存。可通过自定义配置文件限制资源使用:

    1. 在项目目录下创建.ddev/mysql/my.cnf文件
    2. 写入以下低内存适配配置:
    [mysqld]
    innodb_buffer_pool_size = 128M
    key_buffer_size = 32M
    max_connections = 50
    query_cache_size = 16M
    
    1. 重启容器生效:ddev restart
  • 限制容器内存配额
    通过DDEV配置直接约束db容器的内存使用上限:

    1. 编辑项目目录下的.ddev/config.yaml,添加:
    db_image_extra_args: ["--memory=512m", "--memory-swap=1g"]
    
    1. 重启容器:ddev restart
  • 排查主机内存状态
    先确认主机内存是否充足:

    free -h
    

    如果可用内存不足,可临时关闭非必要进程,或新增交换空间缓解:

    sudo fallocate -l 2G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    
  • 使用优化后的MySQL 5.6镜像
    官方mysql:5.6镜像未适配现代容器环境,可自行构建优化后的本地镜像:

    1. 创建Dockerfile:
    FROM mysql:5.6
    COPY my.cnf /etc/mysql/conf.d/
    
    1. 构建本地镜像:docker build -t local-mysql56 .
    2. 修改ddev配置使用本地镜像:在.ddev/config.yaml中设置db_image: local-mysql56
    3. 重启容器:ddev restart
  • 临时调整内核OOM触发策略(谨慎操作)
    Manjaro 6.3内核的OOM Killer触发阈值较严格,可临时降低mysqld被优先杀死的概率:

    1. 找到mysqld进程PID:ps aux | grep mysqld
    2. 修改OOM评分:echo -1000 | sudo tee /proc/<PID>/oom_score_adj
      注意:此设置仅临时生效,重启后会重置,不建议长期依赖。

内容的提问来源于stack exchange,提问作者Jonas Eberle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 23:12:51