Mamy okno CentOS, które próbuję zwiększyć maksymalną liczbę plików, które użytkownik może otworzyć. Obecnie, gdy biegnę ulimit -Sn
mam 1024
i ulimit -Hn
daje 4096
. Potrzebuję tej liczby około 6000.
W /etc/sysctl.conf
ustawiłem fs.file-max = 100000
. W /etc/security/limits.conf
mam następujący zestaw:
username soft nofile 6000
username hard nofile 65535
Wylogowałem się i zalogowałem ponownie, username
ale nadal nie widzę moich zmian. Czego potrzebuję, aby zmienić tę wartość?
Mam tylko /etc/security/limits.d
to 90-nproc.conf
. Upewniłem się również, że ulimit nie jest wywoływany w moim .bash_profile lub .bashrc.
Po uruchomieniu sysctl -p
wyrzuca ustawienia, które chcę, i pokazuje wartość fs.file-max
tego, czego chcę. Ale kiedy biegnę ulimit -Sn
, dostaję 1048. Jeśli spróbuję uciec sysctl --system
, dostaję error: Unknown parameter "--system"
.
Odpowiedzi:
Aby wymusić
/etc/sysctl.conf
ponowne odczytanie, uruchomsysctl -p
.Plik
/etc/security/limits.conf
jest odczytywany przez powłoki logowania i powinieneś zamknąć okna aktywnych sesji, jeśli jest w GUI. W przypadku zdalnych loginów ma to wpływ na ponowne zalogowanie.źródło
fs.file-max
to maksymalna liczba otwartych plików w systemie. Jest to twardy limit i nie będzie odzwierciedlony wulimit
połączeniach w twoim przypadku.Jak powiedział inny plakat, sysctl musi ustawić wartość w działającym jądrze. Istnieje kilka sposobów ustawienia wartości bez ponownego uruchamiania:
IMHO ostatnia metoda jest najlepsza, ponieważ replikuje kolejność stosowania ustawień podczas rozruchu (a więc jeśli wystąpi konflikt, stanie się to widoczne).
Uwaga: Nie jestem pewien, której wersji CentOS używasz, ale przynajmniej na 7 napotkałem problem polegający na tym, że jeśli Dracut odbuduje initramfs z jakiegokolwiek powodu (na przykład podczas instalowania nowego modułu jądra), skopiuje zawartość /etc/sysctl.* do initramfs, który zostanie następnie wykonany przez systemd-sysctl podczas tej fazy, nawet jeśli później usuniesz te wpisy z /etc/sysctl.conf.
W moim środowisku edytowałem moduł systemd dracut, aby wykluczyć /etc/sysctl.* z tego środowiska (ponieważ te ustawienia zostaną ustawione, gdy rootfs zostanie zamontowany, a systemd-sysctl uruchomi się ponownie). To tylko gotcha, na którą możesz natknąć się.
źródło