Mogę użyć ulimit, ale myślę, że wpływa to tylko na moją sesję powłoki. Chcę zwiększyć limit dla wszystkich procesów. To jest na Red Hat.
Mogę użyć ulimit, ale myślę, że wpływa to tylko na moją sesję powłoki. Chcę zwiększyć limit dla wszystkich procesów. To jest na Red Hat.
Odpowiedzi:
Odpowiedź Justina mówi, jak zwiększyć liczbę otwartych plików dostępnych ogółem dla całego systemu. Ale myślę, że pytasz, jak zwiększyć limit na użytkownika na całym świecie. Odpowiedzią na to jest dodanie następujących wierszy /etc/security/limits.conf
:
* soft nofile 2048
* hard nofile 2048
(Gdzie * oznacza wszystkich użytkowników.)
W tym pliku iw nim jest trochę dokumentacji podsumowującej man limits.conf
. Jest to realizowane przez pam_limits.so
moduł, który jest wywoływany dla różnych usług skonfigurowanych w/etc/pam.d/
.
I muszę przyznać, że nie mam pojęcia, skąd bierze się domyślna 1024. I uwierz mi, spojrzałem. Próbowałem nawet bez skonfigurowanego modułu pam_limits i nadal tam jest. Musi być gdzieś zakodowany, ale nie jestem do końca pewien, gdzie.
Zgodnie z artykułem Linux Zwiększ maksymalną liczbę otwartych plików / deskryptorów plików (FD) , możesz zwiększyć limit otwartych plików, dodając wpis /etc/sysctl.conf
.
Dodaj dyrektywę config w następujący sposób:
fs.file-max = 100000
Następnie zapisz i zamknij plik. Użytkownicy muszą się wylogować i zalogować ponownie, aby zmiany odniosły skutek, lub mogą po prostu wpisać następujące polecenie:
# sysctl -p
Możesz również zweryfikować swoje ustawienia za pomocą polecenia:
# cat /proc/sys/fs/file-max
Zwiększ maksymalną liczbę otwartych plików ulimit w systemie Linux
1. Krok: otwórz sysctl.conf
i dodaj tę linię fs.file-max = 65536
$ vi /etc/sysctl.conf
dodaj nową linię i
fs.file-max = 65536
Zapisz i wyjdź.
2. krok:
$ vi /etc/security/limits.conf
i dodaj poniżej wspomniane
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
zapisz i zamknij sprawdź max otwarty plik ulimit
# ulimit -a
....
open files (-n) 65535
Ale jeśli próbujesz zwiększyć maksymalną liczbę otwartych plików usługi, takiej jak MariaDB lub coś innego (używając systemd ), musisz to zrobić bezpośrednio w pliku .service
/lib/systemd/system/<servicename>.service
Będzie coś takiego:
[Unit]
Description=Some Daemon
After=syslog.target network.target
[Service]
Type=notify
LimitNOFILE=49152
ExecStart=/usr/sbin/somedaemon
[Install]
WantedBy=multi-user.target
Pełna odpowiedź jest tutaj: Zwiększenie nproc dla procesów uruchomionych przez systemd na CentOS 7
systemd
wraz z jej ciągłymi zmianami rośnie w całym ekosystemie Linuksa. Chociaż sugerowałbym edycję odpowiedzi cp -r /lib/systemd/system/mariadb.service /etc/systemd/system/
i dokonanie zmian w tym pliku, a nie w ogólnosystemowym pliku usługi dostarczonym przez pakiet.
SUPLEMENT:
Możesz znaleźć config w innym miejscu: /etc/security/limits.d/*.conf
Musiałem to zmodyfikować. Bez tego nie działałoby. Format jest taki sam jak dlalimits.conf