Поиск по сайту:

Как увеличить лимит количества открытых файлов в Linux


В Linux вы можете изменить максимальное количество открытых файлов. Вы можете изменить это число с помощью команды ulimit. Он дает вам возможность контролировать ресурсы, доступные оболочке или запущенному ею процессу.

Читайте также: Установите ограничения на количество запущенных процессов Linux на уровне каждого пользователя

В этом коротком руководстве мы покажем вам, как проверить текущий лимит открытых файлов и описаний файлов, но для этого вам потребуется root-доступ к вашей системе.

Во-первых, давайте посмотрим, как узнать максимальное количество открытых дескрипторов файлов в вашей системе Linux.

Найти лимит открытых файлов Linux

Значение сохраняется в:

cat /proc/sys/fs/file-max

818354

Число, которое вы увидите, показывает количество файлов, которые пользователь мог открыть за сеанс входа в систему. Результат может отличаться в зависимости от вашей системы.

Например, на моем сервере CentOS ограничение было установлено на 818354, а на сервере Ubuntu, который я запускаю дома, ограничение по умолчанию было установлено значение 176772.

Если вы хотите увидеть жесткие и мягкие ограничения, вы можете использовать следующие команды:

Проверьте жесткий лимит в Linux

ulimit -Hn

4096

Проверьте мягкие ограничения в Linux

ulimit -Sn

1024

Чтобы увидеть жесткие и мягкие значения для разных пользователей, вы можете просто переключить пользователя с помощью “su” на пользователя, ограничения которого вы хотите проверить.

Например:

su marin
ulimit -Sn

1024
ulimit -Hn

4096

Как проверить общесистемные ограничения файловых дескрипторов в Linux

Если вы используете сервер, некоторые из ваших приложений могут потребовать более высоких ограничений для дескрипторов открытых файлов. Хорошим примером являются службы MySQL/MariaDB или веб-сервер Apache.

Вы можете увеличить лимит открываемых файлов в Linux, отредактировав директиву ядра fs.file-max. Для этой цели вы можете использовать утилиту sysctl.

Sysctl используется для настройки параметров ядра во время выполнения.

Например, чтобы увеличить лимит открытых файлов до 500000, вы можете использовать следующую команду от имени пользователя root:

sysctl -w fs.file-max=500000

Проверить текущее значение открытых файлов можно следующей командой:

cat /proc/sys/fs/file-max

С помощью приведенной выше команды внесенные вами изменения останутся активными только до следующей перезагрузки. Если вы хотите применить их навсегда, вам придется отредактировать следующий файл:

vi /etc/sysctl.conf

Добавьте следующую строку:

fs.file-max=500000

Конечно, вы можете изменить число в соответствии с вашими потребностями. Чтобы еще раз проверить изменения, используйте:

cat /proc/sys/fs/file-max

Пользователям необходимо будет выйти из системы и снова войти в систему, чтобы изменения вступили в силу. Если вы хотите применить ограничение немедленно, вы можете использовать следующую команду:

sysctl -p

Установите ограничения на количество открытых файлов на уровне пользователя в Linux

В приведенных выше примерах показано, как устанавливать глобальные ограничения, но вы можете применить ограничения для каждого пользователя. Для этого вам как пользователю root необходимо отредактировать следующий файл:

vi /etc/security/limits.conf

Если вы администратор Linux, я предлагаю вам подробно ознакомиться с этим файлом и узнать, что с ним можно сделать. Прочтите все комментарии к нему, поскольку он обеспечивает большую гибкость с точки зрения управления системными ресурсами, ограничивая пользователей/группы на разных уровнях.

Строки, которые вы должны добавить, принимают следующие параметры:

<domain>        <type>  <item>  <value>

Вот пример установки мягких и жестких ограничений для пользователя marin:

## Example hard limit for max opened files
marin        hard nofile 4096
## Example soft limit for max opened files
marin        soft nofile 1024

Последние мысли

В этой краткой статье был показан базовый пример того, как можно проверить и настроить глобальные и пользовательские ограничения на максимальное количество открытых файлов.

Хотя мы лишь коснулись поверхности, я настоятельно рекомендую вам более подробно просмотреть и прочитать /etc/sysctl.conf и /etc/security/limits.conf и научитесь ими пользоваться. Однажды они вам очень помогут.