Как я могу увеличить лимит открытых файлов для всех процессов?


32

Я могу использовать ulimit, но думаю, что это влияет только на мой сеанс оболочки. Я хочу увеличить лимит для всех процессов. Это на Red Hat.


Какая версия Red Hat, кстати? RHEL5?
— Mattdm

Ответы:


26

В ответе Джастина рассказывается, как увеличить общее количество открытых файлов для всей системы. Но я думаю, что вы спрашиваете, как повысить лимит для каждого пользователя в глобальном масштабе. Ответ заключается в том, чтобы добавить следующие строки /etc/security/limits.conf:

*               soft    nofile            2048
*               hard    nofile            2048

(Где * означает всех пользователей.)

В самом файле и в нем есть краткая документация man limits.conf. Это реализуется через pam_limits.soмодуль, который вызывается для различных служб, настроенных в /etc/pam.d/.

И, должен признать, я понятия не имею, откуда взялся этот дефолт 1024. И поверь мне, я посмотрел. Я даже пытался без настроенного модуля pam_limits, и он все еще там. Это должно быть где-то жестко, но я не совсем уверен, где.


2
Хм ... Я установил это правильно. Выйдите из SSH и вернитесь, и мой мягкий лимит все еще установлен на 1024. Есть ли что-то, что я пропускаю, чтобы сделать это "активным"? Спасибо.
— Джошуа Пинтер

@mattdm - Стоит отметить, что в некоторых дистрибутивах Linux упомянутый файл будет находиться по адресу: /etc/limits.conf
— Гай Авраам,

13

Согласно статье « Увеличение максимального количества открытых файлов / файловых дескрипторов» (FD) в Linux , вы можете увеличить лимит открытых файлов, добавив запись в /etc/sysctl.conf.

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

fs.file-max = 100000

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

# sysctl -p

Вы также можете проверить свои настройки с помощью команды:

# cat /proc/sys/fs/file-max

Я скептически отношусь к необходимости выхода и повторного входа для этого конкретного параметра, который является общесистемным. (Это касается почти всего в sysctl ...)
— mattdm

13

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

1. Шаг: откройте sysctl.conf и добавьте эту строку fs.file-max = 65536

$ vi /etc/sysctl.conf

добавить новую строку и

fs.file-max = 65536

Сохранить и выйти.

2.Step:

$ vi /etc/security/limits.conf

и добавьте ниже упомянутого

* soft     nproc          65535
* hard     nproc          65535
* soft     nofile         65535
* hard     nofile         65535

сохранить и выйти проверить максимальный открытый файл ulimit

# ulimit -a

....
open files                      (-n) 65535

6

Но если вы пытаетесь увеличить максимальное количество открытых файлов службы, такой как MariaDB или чего-то еще (используя systemd ), вы должны сделать это непосредственно в файле .service.

/lib/systemd/system/<servicename>.service

Будет что-то вроде этого:

[Unit]
Description=Some Daemon
After=syslog.target network.target

[Service]
Type=notify
LimitNOFILE=49152
ExecStart=/usr/sbin/somedaemon

[Install]
WantedBy=multi-user.target

Полный ответ здесь: Увеличение nproc для процессов, запускаемых systemd в CentOS 7


Это необходимо поддержать, так как повсеместное распространение systemdнаряду с его текущими изменениями растет в экосистеме Linux. Хотя я бы предложил отредактировать ответ cp -r /lib/systemd/system/mariadb.service /etc/systemd/system/и внести изменения в этот файл, а не в файл общесистемной службы, предоставляемый пакетом.
— ILMostro_7

3

за дополнительную плату:

Вы можете найти конфигурацию в другом месте: /etc/security/limits.d/*.conf

Я должен был изменить это. Это не сработало без этого. Формат такой же, как дляlimits.conf


Мне также пришлось обновить этот файл, чтобы он полностью работал на наших серверах CentOS.
— Джон Айсбренер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.