На Ubuntu 22.04 редактирование limits.conf для увеличения количества дескрипторов файлов не работает

Вопрос или проблема

Я следовал этому ответу: https://askubuntu.com/a/162230

Я отредактировал limits.conf, теперь он выглядит так:

* soft nofile 65536
* hard nofile 65536
* soft nproc  65536
* hard nproc  Unlimited
root soft nofile 65536
root hard nofile 65536

Также я отредактировал файлы “/etc/pam.d/common-session” и “/etc/pam.d/common-session-noninteractive”. Добавил строку в конце обоих файлов:

session required pam_limits.so

И я перезагрузил Ubuntu, но “prlimit” все еще показывает

NOFILE  ... 1024  65536 files

ulimit -n также показывает 1024

Как я могу изменить это навсегда?

Самый простой способ изменить это – добавить ulimit -S -n 65536 в файл инициализации вашей оболочки (.bashrc возможно).

Я думаю, это ошибка.

Я также не могу изменить эти значения, даже если укажу для systemd LimitNOFILE как пользовательскую настройку или как системную настройку, зависимые службы падают из-за лимита nofile в 1024, независимо от настроек в limits…

Чтобы обойти это, я принудительно установил лимит для пользователя root на 65535, используя ulimit… Это нужно применять при каждой загрузке.

Ответ или решение

На Ubuntu 22.04, если изменения в файле limits.conf не приводят к увеличению количества дескрипторов файлов, можно предпринять несколько шагов для решения проблемы. Следует учитывать, что настройки по умолчанию системы и пользователя могут пересекаться. Вот подробный список шагов, которые необходимо выполнить:

  1. Правильное редактирование файла limits.conf:
    Убедитесь, что изменения в файле /etc/security/limits.conf выполнены корректно. Должно быть добавлено следующее:

    * soft nofile 65536
    * hard nofile 65536
    * soft nproc  65536
    * hard nproc  Unlimited

    Также проверьте, что для пользователя root указаны аналогичные строки, как у вас уже указано.

  2. Редактирование файлов PAM:
    Важно, чтобы вы добавили строку:

    session required pam_limits.so

    в файлы /etc/pam.d/common-session и /etc/pam.d/common-session-noninteractive, как вы уже сделали. Убедитесь, что добавленная строка находится в самом конце файлов.

  3. Изменения для systemd:
    Если вы запускаете службы через systemd (что актуально для большинства современных дистрибутивов Linux), следует задать лимиты на уровне unit-файла системных служб. Для этого выполните следующие действия:

    • Найдите нужный unit-файл, который хотите изменить (например, для службы myservice.service, которая находится в /etc/systemd/system/myservice.service или в /lib/systemd/system/myservice.service).

    • Откройте его для редактирования и добавьте следующие строки под секцией [Service]:

      LimitNOFILE=65536
    • После внесения изменений выполните команду для перезагрузки конфигурации systemd:

      sudo systemctl daemon-reload
    • Перезапустите службу, чтобы изменения вступили в силу:

      sudo systemctl restart myservice
  4. Перезагрузка системы:
    После внесения всех изменений обязательно перезагрузите систему, чтобы они вступили в силу. Вы можете проверить, изменились ли лимиты командой:

    ulimit -n

    или

    prlimit --pid $$ --nofile

    Вы должны увидеть, что лимиты увеличились до 65536.

  5. Дополнительное изменение в конфигурации пользователя:
    Если вам необходимо изменить лимит на уровне пользователя, вы также можете добавить строку ulimit -n 65536 в файл ~/.bashrc или ~/.profile. После этого не забудьте выполнить:

    source ~/.bashrc

    Или перезагрузите терминал.

  6. Проверка и устранение возможных ошибок:
    Если после выполнения всех шагов лимиты все еще не изменяются, проверьте наличие других конфигурационных файлов или параметров, которые могут переопределять настройки (например, в файлах /etc/systemd/system.conf и /etc/systemd/user.conf). Убедитесь, что везде установлены правильные значения.

Следуя этим рекомендациям, вы сможете успешно изменить количество доступных дескрипторов файлов на вашей системе Ubuntu 22.04.

Оцените материал
Добавить комментарий

Капча загружается...