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

如何解决Redis服务关于内核参数vm.overcommit_memory的警告?

解决Yocto系统中Redis的overcommit_memory警告问题

方案1:使用sysctl.d目录配置(推荐)

Yocto等嵌入式Linux系统通常优先读取/etc/sysctl.d/目录下的分散配置文件,而非单独的/etc/sysctl.conf,按以下步骤操作:

  • 创建Redis专用的sysctl配置文件:
    echo "vm.overcommit_memory = 1" > /etc/sysctl.d/90-redis.conf
    
  • 立即加载新配置(无需重启系统):
    sysctl --system
    
  • 验证参数是否生效:
    sysctl vm.overcommit_memory
    
    返回vm.overcommit_memory = 1则说明配置生效。
  • 重启Redis服务并检查警告是否消失:
    systemctl restart redis
    journalctl -u redis | grep overcommit_memory
    

方案2:修改Redis systemd服务文件

如果sysctl配置仍不生效,可直接在Redis的systemd服务中添加预启动命令强制设置参数:

  • 编辑Redis服务文件(路径可能为/usr/lib/systemd/system/redis.service或/etc/systemd/system/redis.service,根据Yocto实际安装路径调整):
    vi /usr/lib/systemd/system/redis.service
    
  • 在[Service]段添加以下内容:
    ExecStartPre=/sbin/sysctl vm.overcommit_memory=1
    
  • 重新加载systemd配置并重启Redis:
    systemctl daemon-reload
    systemctl restart redis
    

方案3:Yocto构建时内置配置(适用于自定义镜像)

如果是自行构建Yocto镜像,可在配方中预设该配置,避免后续手动操作:

  1. 在Redis配方(或系统基础配方)的files目录下创建90-redis.conf文件,内容为:
    vm.overcommit_memory = 1
    
  2. 在配方的.bb文件中添加:
    FILES_${PN} += "${sysconfdir}/sysctl.d/90-redis.conf"
    SRC_URI += "file://90-redis.conf"
    
  3. 重新构建镜像,生成的系统会默认加载该配置。

排查要点

  • 执行sysctl --system命令,查看输出的配置文件加载列表,确认你的配置文件被正确读取。
  • 若重启后参数被重置,检查系统是否有其他启动脚本、内存管理工具覆盖了该参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 07:53:14