Jak mogę zwiększyć limit otwartych plików dla wszystkich procesów?

32

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.

przeciwdziałanie
źródło
Nawiasem mówiąc, która wersja Red Hat? RHEL5?
mattdm,

Odpowiedzi:

26

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.somoduł, 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.

mattdm
źródło
2
Hmm ... Ustawiłem to poprawnie. Wyjdź z SSH i wróć, a mój miękki limit jest nadal ustawiony na 1024. Czy brakuje mi czegoś, aby to „aktywować”? Dzięki.
Joshua Pinter,
@mattdm - Warto wspomnieć, że w niektórych dystrybucjach Linuksa wspomniany plik będzie pod: /etc/limits.conf
Guy Avraham
13

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
Justin Ethier
źródło
Jestem sceptycznie nastawiony do konieczności wylogowania i ponownego zalogowania się w tym konkretnym ustawieniu, które dotyczy całego systemu. (To dotyczy
praktycznie
13

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
minhas23
źródło
6

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

Matheus Baldasso
źródło
Należy to ocenić, ponieważ wszechobecność systemdwraz 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.
ILMostro_7
3

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

Waldemar Wosiński
źródło
Musiałem także zaktualizować ten plik, aby ustawienie w pełni obejmowało nasze serwery CentOS.
John Eisbrener