Как эффективно увеличить максимальное количество открытых файлов mongodb на Debian? - PullRequest
0 голосов
/ 02 января 2019

Мой сервер 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 it.

    /mongodb/bin/mongos --config /mongodb/config/dbs.config --fork
    
  4. Создайте /etc/init.d/mongo.sh и chmod + x it.

    #! /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 / limit, возвращаем:

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

линия без масок.

Я перезагружаю сервер после каждой попытки.

С их помощью "Максимальное количество открытых файлов" сессии / оболочки обновилось до 65535, в то время как / proc / pid / limit НИКОГДА не изменилось, все еще остается 1024.

Любой совет?

1 Ответ

0 голосов
/ 05 января 2019

После нескольких дней обучения я нашел решение.

Я использую /etc/inid.d/mongo.sh в качестве сценария автозапуска и использую

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

в качестве сценария запуска.Поэтому мне нужно установить pam auth с помощью sudo.

Так что решение - в /etc/pam.d, его нужно добавить ниже в /etc/pam.d/sudo

session    required   pam_limits.so

Затем перезагрузите, это СДЕЛАНО.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...