Як я можу збільшити ліміт відкритих файлів для всіх процесів?


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

Відповідно до статті Linux Збільшення максимальної кількості відкритих файлів / дескрипторів файлів (FD) , ви можете збільшити ліміт відкритих файлів, додавши запис до /etc/sysctl.conf.

Додайте конфігураційну директиву так:

fs.file-max = 100000

Потім збережіть і закрийте файл. Користувачам потрібно вийти та знову увійти, щоб зміни набрали чинності, або вони можуть просто ввести таку команду:

# sysctl -p

Ви також можете перевірити свої настройки за допомогою команди:

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

Я скептично ставлюсь до необхідності вийти із системи та знову для цього конкретного параметра, який є загальносистемним. (Це майже все стосується sysctl ...)
mattdm

13

Збільшити максимальну кількість ulimit відкритого файлу в Linux

1.Крок: відкрийте sysctl.conf і додайте цей рядок fs.file-max = 65536

$ vi /etc/sysctl.conf

додати новий рядок і

fs.file-max = 65536

зберегти та вийти.

2.Крок:

$ 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 для процесів, запущених системою на 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.