Назад | Перейти на главную страницу

Увеличение ulimit на CentOS

У нас есть окно CentOS, в котором я пытаюсь увеличить максимальное количество файлов, которые пользователь может открыть. Сейчас, когда я бегу ulimit -Sn я получил 1024 и ulimit -Hn дает 4096. Мне нужно около 6000.

В /etc/sysctl.conf Я установил fs.file-max = 100000. В /etc/security/limits.conf У меня такой набор:

username soft nofile 6000
username hard nofile 65535

Я вышел из системы и снова зашел как username но я все еще не вижу своих изменений. Что мне нужно, чтобы изменить это значение?

Все, что у меня есть /etc/security/limits.d является 90-nproc.conf. Я также убедился, что ulimit не вызывается в моем .bash_profile или .bashrc.

Когда я бегу sysctl -p он показывает нужные мне настройки и показывает значение fs.file-max что я хочу. Но когда я бегу ulimit -Sn, Я получаю 1048. Если я попытаюсь запустить sysctl --system я получил error: Unknown parameter "--system".

Заставить /etc/sysctl.conf быть прочитанным снова запустить sysctl -p.

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

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

sysctl -p /etc/sysctl.conf
sysctl -w fs.file-max=100000
sysctl --system

IMHO последний метод является лучшим, поскольку он воспроизводит порядок, в котором настройки будут применяться во время загрузки (и, таким образом, если у вас возникнет конфликт, это станет очевидным).

Примечание: я не уверен, какую версию CentOS вы используете, но по крайней мере на 7 я столкнулся с проблемой, когда, если dracut по какой-либо причине перестраивает initramfs (например, при установке нового модуля ядра), он будет копировать содержимое /etc/sysctl.* в initramfs, которое затем будет выполнено systemd-sysctl на этом этапе, даже если вы позже удалите эти записи из /etc/sysctl.conf.

В своей среде я отредактировал модуль dracut systemd, чтобы исключить /etc/sysctl.* из этой среды (поскольку эти параметры будут установлены после монтирования rootfs и повторного запуска systemd-sysctl). Это просто ошибка, с которой вы можете столкнуться.