В настоящее время у меня есть следующая запись в /etc/security/limits.d/90-nproc.conf
на основе Mongo DB рекомендуемые настройки ulimit.
mongod soft nofile 64000
mongod soft nproc 64000
Мне нужно значительно увеличить количество разрешенных файловых дескрипторов, скажем - 999999
. В обычных ситуациях, вероятно, будет доступ только к нескольким тысячам файлов в день. Причина большого количества файлов заключается в том, как работает механизм хранения WiredTiger. Он использует несколько файлов на коллекцию, которых у меня много тысяч.
Есть ли какие-то негативные последствия для этой ситуации?
Вредит ли производительности системы большое количество открытых, но практически неиспользуемых файловых дескрипторов?
nproc
- ограничение на количество процессов. Если вы имеете в виду файлы, которые вам нужны nofiles
.
Это просто счетчик максимального лимита. Увеличение лимита не использует ресурсы, пока в системе не используется много вещей.
64k - это много процессов. Ваша производительность может пострадать в зависимости от того, сколько у вас памяти и процессора. Из-за такого количества задач накладные расходы планировщика Linux могут стать значительными.
Также при необходимости настройте файловые дескрипторы, как указано в Ссылка mongodb на ulimit. Дескрипторы файлов относительно легкие, и вам нужен один для каждого открытого файла и сокета, но 64 КБ по-прежнему много.
Одна проблема, которую я вижу, заключается в том, что если мы дадим слишком много nproc пользователю, и пользователь действительно сможет достичь из-за ошибки в коде, поэтому root не будет ничего для выполнения. Другой проблемой будет то, что каждому процессу потребуются ресурсы для поддержания своего состояния и выполнения обработки, если мы дадим разработчику столько ресурсов, которые могут использовать систему, и, безусловно, проблематично для системы, также вы должны учитывать другие ресурсы, такие как ОЗУ и т. Д., Для таких больших ограничений.