Jeśli pojawi się błąd” za dużo otwartych plików (24)”, Twoja aplikacja/polecenie/skrypt osiąga maksymalny Limit otwartych plików dozwolony przez Linuksa. Musisz zwiększyć limit otwartych plików, jak poniżej:
zwiększ limit
limit na użytkownika
Otwórz plik: /etc/security/limits.conf
Wklej following pod koniec:
* hard nofile 500000* soft nofile 500000root hard nofile 500000root soft nofile 500000
500000 to uczciwa liczba. Nie jestem pewien, co to jest max limit, ale 999999 (Six-9) zadziałało u mnie raz, o ile pamiętam.
po zapisaniu pliku może być konieczne wylogowanie i ponowne zalogowanie.
Pam-limits
czytałem w wielu miejscach, że dodatkowy krok jest potrzebny do zmiany limitu dla procesów demona. Nie potrzebowałem jeszcze śledzenia, ale jeśli powyższe zmiany nie działają dla ciebie, możesz spróbować.
Otwórz /etc/pam.d/common-session
dodaj następującą linię:
session required pam_limits.so
Limit dla całego systemu
Ustaw ten limit wyższy niż ustawiony powyżej.
Otwórz /etc/sysctl.conf
Dodaj:
fs.file-max = 2097152
Run:
sysctl -p
powyżej zwiększy „całkowitą” liczbę plików, które mogą pozostać otwarte w całym systemie.
Sprawdź nowe limity
Użyj następującego polecenia, aby zobaczyć maksymalny limit deskryptorów plików:
cat /proc/sys/fs/file-max
limit twardy
ulimit -Hn
limit miękki
ulimit -Sn
jeśli jesteś zalogowany jako root:
Sprawdź limit dla innego użytkownika
po prostu zastąp www-data
nazwą użytkownika Linuksa, którą chcesz sprawdzić limity dla:
su - www-data -c 'ulimit -aHS' -s '/bin/bash'
Sprawdź limity uruchomionego procesu:
Znajdź ID procesu (PID):
ps aux | grep process-name
Załóżmy, że XXX jest PID, a następnie uruchom następujące polecenia, aby sprawdzić limity:
cat /proc/XXX/limits