gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:51 25 4
gpt4 key购买 nike

我的 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

该行未被屏蔽。

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

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

有什么建议吗?

最佳答案

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

我使用/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

然后重启,完成。

关于linux - 如何有效地增加 Debian 上 mongodb 的最大打开文件数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54006887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com