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

Ubuntu 14.04.05 LTS下MongoDB进程ulimit值调整求助

解决MongoDB在Ubuntu 14.04上ulimit进程数不生效的问题

我之前在Ubuntu 14.04上部署MongoDB时也碰到过一模一样的ulimit限制不生效的问题,给你梳理几个关键的排查和解决步骤:

1. 确认PAM配置是否正确加载limits规则

Ubuntu的limits.conf配置依赖PAM模块生效,你需要检查两个关键文件:

  • /etc/pam.d/common-session
  • /etc/pam.d/common-session-noninteractive

确保这两个文件里都包含一行:

session required pam_limits.so

如果没有的话,直接添加进去,之后重启服务器(或者重新登录root用户)让配置生效。

2. 针对systemd管理的MongoDB服务单独配置限制

如果你的MongoDB是用systemd启动的(Ubuntu 14.04部分版本默认用systemd),全局的limits.conf设置可能不会作用于系统服务。你需要修改MongoDB的service配置文件:

  1. 打开MongoDB的service文件,通常路径是/lib/systemd/system/mongodb.service或者/etc/systemd/system/mongodb.service
  2. 在[Service]段落下添加以下配置:
    LimitNPROC=64000
    LimitNOFILE=64000
    LimitSIGPENDING=infinity
    
  3. 重新加载systemd配置并重启MongoDB:
    systemctl daemon-reload
    systemctl restart mongodb
    

3. 针对init.d启动的MongoDB服务添加ulimit设置

如果你的MongoDB是通过传统init.d脚本启动的,需要在启动脚本里直接设置ulimit:

  1. 打开/etc/init.d/mongodb脚本
  2. 在start()函数的开头部分添加以下命令:
    ulimit -u unlimited
    ulimit -n 64000
    ulimit -i unlimited
    
  3. 保存后重启MongoDB服务:
    service mongodb restart
    

4. 验证限制是否生效

重启MongoDB后,你可以通过以下步骤确认设置是否生效:

  1. 找到MongoDB的进程ID:
    ps aux | grep mongod
    
  2. 查看该进程的实际限制:
    cat /proc/<你的mongod进程ID>/limits
    
    检查输出中的Max processes和Max open files是否符合你的预期(至少32000进程数和64000文件数)。

另外,还要注意检查/etc/security/limits.d/目录下的配置文件,这些文件的优先级比/etc/security/limits.conf高,如果有冲突的配置会覆盖你的设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:16:33