Мой сервер 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, выполнив следующие действия:
- Загрузите пакет .tgz с официального сайта и распакуйте в папку.
- Создать mongodb как системного пользователя.
Создайте файл сценария mongo.auto и выполните команду chmod + x it.
/mongodb/bin/mongos --config /mongodb/config/dbs.config --fork
Создайте /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
Установлен сервис для автозапуска:
insserv mongo.sh
Готово.
Для "Слишком много открытых файлов" я проверяю / 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
Я попробовал четыре метода ниже:
Добавить ulimit в /etc/rc.local
ulimit -SHn 65535
Добавить ulimit в / etc / profile
ulimit -SHn 65535
Добавить параметр в /etc/security/limits.conf
mongodb soft nofile 65535
mongodb hard nofile 65535
Добавить параметр в /etc/sysctl.conf
fs.file-max=65535
И я проверил /etc/pam.d/login,
session required pam_limits.so
линия без масок.
Я перезагружаю сервер после каждой попытки.
С их помощью "Максимальное количество открытых файлов" сессии / оболочки обновилось до 65535, в то время как / proc / pid / limit НИКОГДА не изменилось, все еще остается 1024.
Любой совет?