如何有效增加Debian上mongodb的最大打开文件数?

时间:2019-01-02 13:03:53

标签: linux mongodb debian settings

我的mongodb服务器经常崩溃,并显示错误“打开的文件太多”。

操作系统是debian 8:

  

Linux VM-64-58-debian 3.16.0-4-amd64#1 SMP Debian 3.16.51-3(2017-12-13)x86_64 GNU / Linux

和MongoDB版本3.4.5。

我通过以下步骤安装mongodb:

  1. 从官方站点下载.tgz软件包,然后解压缩到文件夹中。
  2. 以系统用户身份创建mongodb。
  3. 创建脚本文件mongo.auto,并将其chmod + x。

    /mongodb/bin/mongos --config /mongodb/config/dbs.config --fork
    
  4. 创建/etc/init.d/mongo.sh,并对其进行chmod + x。

    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides:
    # Required-Start:
    # Required-Stop:
    # Should-Start:
    # Should-Stop:
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    ### END INIT INFO
    
    ############### EDIT ME ##################
    # path to app
    
    # user
    RUN_AS=mongodb
    sudo -u mongodb /mongodb/bin/mongo.auto
    
  5. 设置为自动运行服务:

    insserv mongo.sh
    
  6. 完成。

对于“打开的文件太多”,我检查了/ proc / pid / limits,返回:

Limit                     Soft Limit           Hard Limit           Units
Max cpu time              unlimited            unlimited            seconds
Max file size             unlimited            unlimited            bytes
Max data size             unlimited            unlimited            bytes
Max stack size            8388608              unlimited            bytes
Max core file size        0                    unlimited            bytes
Max resident set          unlimited            unlimited            bytes
Max processes             63596                63596                processes
Max open files            1024                 4096                 files
Max locked memory         65536                65536                bytes
Max address space         unlimited            unlimited            bytes
Max file locks            unlimited            unlimited            locks
Max pending signals       63596                63596                signals
Max msgqueue size         819200               819200               bytes
Max nice priority         0                    0
Max realtime priority     0                    0
Max realtime timeout      unlimited            unlimited            us

我需要将“最大打开文件数”增加到1024至65536或无限制,请参考mongodb文档

我尝试了以下四种方法:

  1. 将ulimit添加到/etc/rc.local

    ulimit -SHn 65535
    
  2. 将ulimit添加到/ etc / profile

    ulimit -SHn 65535
    
  3. 将设置添加到/etc/security/limits.conf

    mongodb soft nofile 65535
    mongodb hard nofile 65535
    
  4. 将设置添加到/etc/sysctl.conf

    fs.file-max=65535
    

我已经检查了/etc/pam.d/login

session    required   pam_limits.so

该行未屏蔽。

每次尝试后我都重新启动服务器。

有了这些,会话/ shell的“最大打开文件数”更新为65535,而/ proc / pid / limits从未更改,仍然保持1024。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

经过几天的研究,我找到了解决方法。

我使用/etc/inid.d/mongo.sh作为自动运行脚本,并使用

sudo -u mongodb /mongodb/bin/mongo.auto

作为启动脚本。 所以我需要用sudo设置pam auth。

因此解决方案是-在/etc/pam.d中,它需要在下面附加到/etc/pam.d/sudo

session    required   pam_limits.so

然后重新启动,完成。