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

Ubuntu 16.04下MongoDB因内存压力崩溃后自动重启配置咨询

解决Ubuntu 16.04中MongoDB崩溃自动重启的问题

嘿,我来帮你搞定这个问题!其实不用纠结systemctl和supervisord二选一,两种方式都能实现MongoDB因内存压力崩溃后自动重启,我给你分别捋清楚:

方案一:直接通过systemctl配置自动重启(推荐)

既然mongod本身已经用systemd管理了,这是最省心的方式,不用额外切换到supervisord:

  • 打开MongoDB的systemd服务配置文件:
    sudo nano /lib/systemd/system/mongod.service
    
  • 在[Service]区块里,添加或修改以下两行配置:
    Restart=always
    RestartSec=5
    
    • Restart=always:不管mongod因为什么原因退出(包括内存压力崩溃),都会自动重启
    • RestartSec=5:崩溃后等待5秒再重启,避免短时间内频繁重启导致系统负载过高
      另外确认一下Type字段,MongoDB默认是Type=forking(因为它会后台运行),这个不用改。
  • 重新加载systemd的配置文件:
    sudo systemctl daemon-reload
    
  • 重启mongod服务让配置生效:
    sudo systemctl restart mongod
    
  • 验证效果:手动杀死mongod进程,然后查看状态确认它自动重启了
    sudo pkill mongod
    systemctl status mongod
    

方案二:用supervisord接管mongod管理

如果你更习惯用supervisord统一管理所有服务,可以按以下步骤操作:

第一步:停止并禁用原systemctl服务

先把原来的systemd管理停掉,避免两个管理工具冲突:

sudo systemctl stop mongod
sudo systemctl disable mongod

第二步:创建supervisord的mongod配置文件

在/etc/supervisor/conf.d/目录下新建mongod.conf文件:

sudo nano /etc/supervisor/conf.d/mongod.conf

写入以下内容:

[program:mongod]
command=/usr/bin/mongod --config /etc/mongod.conf
autostart=true
autorestart=true
startretries=3
user=mongodb
stdout_logfile=/var/log/mongod/supervisor.log
stderr_logfile=/var/log/mongod/supervisor.err.log

参数说明:

  • command:指定mongod的启动命令和配置文件路径,确保路径和你的系统一致
  • autorestart=true:开启崩溃自动重启
  • startretries:启动失败时最多重试3次
  • user:用mongodb用户运行,和原systemd的配置保持一致,避免权限问题
  • 日志路径:指定日志文件位置,需要先确保目录存在且有写入权限:
    sudo mkdir -p /var/log/mongod && sudo chown mongodb:mongodb /var/log/mongod
    

第三步:更新supervisord配置并启动mongod

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start mongod

验证效果:杀死mongod进程后,用supervisorctl status mongod查看状态,确认它自动重启了。

额外建议:优化MongoDB内存配置减少崩溃

除了配置自动重启,最好调整MongoDB的内存使用,从根源减少因内存压力崩溃的概率:

  • 打开MongoDB的配置文件:sudo nano /etc/mongod.conf
  • 找到wiredTiger.engineConfig区块,设置合理的缓存大小,比如服务器内存的50%(假设服务器是8G内存,就设置cacheSizeGB: 4):
    wiredTiger:
      engineConfig:
        cacheSizeGB: 4
    
  • 重启mongod让配置生效:sudo systemctl restart mongod(如果用supervisord就用supervisorctl restart mongod)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:35:06