Podczas uruchamiania mojej aplikacji czasami pojawia się błąd too many files open
.
Uruchamianie ulimit -a
raportów, że limit wynosi 1024. Jak zwiększyć limit powyżej 1024?
Edytuj
ulimit -n 2048
wyniki w błędzie uprawnień.
Podczas uruchamiania mojej aplikacji czasami pojawia się błąd too many files open
.
Uruchamianie ulimit -a
raportów, że limit wynosi 1024. Jak zwiększyć limit powyżej 1024?
Edytuj
ulimit -n 2048
wyniki w błędzie uprawnień.
Odpowiedzi:
Zawsze możesz spróbować zrobić ulimit -n 2048
. Spowoduje to jedynie zresetowanie limitu dla bieżącej powłoki, a podana liczba nie może przekroczyć twardego limitu
Każdy system operacyjny ma inną twardą konfigurację w pliku konfiguracyjnym. Na przykład limit twardych otwartych plików w systemie Solaris można ustawić podczas rozruchu z / etc / system.
set rlim_fd_max = 166384
set rlim_fd_cur = 8192
W systemie OS X te same dane muszą być ustawione w /etc/sysctl.conf.
kern.maxfilesperproc=166384
kern.maxfiles=8192
W Linuksie ustawienia te są często w /etc/security/limits.conf.
Istnieją dwa rodzaje ograniczeń:
Miękkie limity mogą być ustawione przez dowolnego użytkownika, podczas gdy twarde limity są zmieniane tylko przez root. Limity są własnością procesu. Są one dziedziczone po utworzeniu procesu potomnego, dlatego podczas inicjalizacji systemu należy ustawić limity ogólnosystemowe w skryptach inicjujących, a limity użytkownika należy ustawić podczas logowania użytkownika, na przykład przy użyciu pam_limits.
Często uruchamiane są ustawienia domyślne. Tak więc, nawet jeśli możesz zresetować swój ulimit w pojedynczej powłoce, może się okazać, że resetuje się do poprzedniej wartości po ponownym uruchomieniu. Możesz chcieć grepować skrypty rozruchowe dla istniejących komend ulimit, jeśli chcesz zmienić domyślne.
ulimit
. Musisz określić, czego używasz (np. WSL, Cygwin).
Jeśli używasz Linuksa i wystąpił błąd uprawnień, musisz zwiększyć dozwolony limit w pliku /etc/limits.conf
lub /etc/security/limits.conf
(gdzie plik znajduje się, zależy od konkretnej dystrybucji Linuksa).
Na przykład, aby umożliwić każdemu na komputerze zwiększenie liczby otwartych plików do 10000, dodaj wiersz do limits.conf
pliku.
* hard nofile 10000
Następnie wyloguj się i zaloguj ponownie do swojego systemu, a powinieneś być w stanie:
ulimit -n 10000
bez błędu pozwolenia.
root
użytkownika. Musisz określić, root hard nofile 10000
czy chcesz dostosować root
limit.
ulimit
i wreszcie dowiedziałem się, że jestem zalogowany jako root. Dlatego ciągle widziałem 1024 ulimit -a
. Zmieniłem wildcare i dodałem *
wnętrze limits.conf
. Teraz wszystko jest dobrze (używam kluczy ssh, nie martw się: P) - Dziękuję !!!
/etc/security/limits.d/
.
1) Dodaj następujący wiersz do /etc/security/limits.conf
webuser hard nofile 64000
następnie zaloguj się jako użytkownik sieci
su - webuser
2) Edytuj następujące dwa pliki dla użytkownika
Dołącz .bashrc i .bash_profile plik uruchamiając
echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
3) Wyloguj się, a następnie zaloguj ponownie i sprawdź, czy zmiany zostały wprowadzone poprawnie:
$ ulimit -a | grep open
open files (-n) 64000
To i oni bum, bum bum.
Jeśli niektóre z twoich usług nie radzą sobie z ograniczeniami, czasem łatwiej jest wprowadzić odpowiednie polecenia w skrypcie inicjującym usługę. Na przykład, gdy raportuje Apache
[alert] (11) Zasób chwilowo niedostępny: apr_thread_create: nie można utworzyć wątku roboczego
Spróbować umieścić ulimit -s unlimited
w /etc/init.d/httpd
. Nie wymaga to ponownego uruchomienia serwera.