Właśnie przeszedł to na CentOS 7 (sam na RHEL) i wykonane blogu pokrycie go, ponieważ miałem tyle kłopotów nawet z tych wszystkich wypowiedzi: coding-stream-of-consciousness.com/2018/12/21/... . Często wraz z otwartymi plikami musisz zwiększyć nproc, który faktycznie znajduje się w wielu plikach ustawień ... a jeśli używasz systemd / systemctl, który ma własne oddzielne ustawienia. To trochę szalone.
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 są po prostu obecnie obowiązującymi limitami
twarde limity oznaczają maksymalną wartość, której nie można przekroczyć przez ustawienie miękkiego limitu
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.
czy możesz mi powiedzieć, jak tego używać w systemie Windows?
Pritam
@ Hoyhoy Mogę to zmienić, 2048ale nie jako 4500dlaczego? zobacz to
alhelal
@GaneshKrishnan co dodać do wspomnianych plików linux?
aviral sanjay
@Pritam Windows nie ma żadnych ulimit. Musisz określić, czego używasz (np. WSL, Cygwin).
Melebius
99
Jeśli używasz Linuksa i wystąpił błąd uprawnień, musisz zwiększyć dozwolony limit w pliku /etc/limits.conflub /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.confpliku.
* hard nofile 10000
Następnie wyloguj się i zaloguj ponownie do swojego systemu, a powinieneś być w stanie:
UWAGA: Symbol wieloznaczny nie dotyczy rootużytkownika. Musisz określić, root hard nofile 10000czy chcesz dostosować rootlimit.
Joshua Pinter,
1
@JoshPinter Haha, właśnie spędziłem ostatnie 3 godziny, przechodząc przez każdy samouczek, jak to zmienić ulimiti 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ę !!!
NiCk Newman
1
@NiCkNewman Cieszę się, że się z tego śmiejesz! To dobra cecha u programisty / sysopsa. Zrobiłem to samo i nie byłem taki miły. Cieszę się, że pomogło! :)
Joshua Pinter
Suplement: Można znaleźć również w tym katalogu config: /etc/security/limits.d/.
Waldemar Wosiński
2
Po raz pierwszy otworzyłem /etc/security/limits.conf i zauważyłem, że wszystko jest tam komentowane. Jaka jest zatem domyślna wartość „hard nofile”?
ka3ak
36
1) Dodaj następujący wiersz do /etc/security/limits.conf
Jeśli zmienisz linię w limit.conf z „trudnej” na „miękką”, powinna stać się nową domyślną i nie wymagać zmian w profilach bash.
RishiD
Wygląda na to, że powtarzasz dodatkowe kroki. Samo ustawienie limitów będzie działało tak samo jak profil, ale we wszystkich sesjach.
Eddie
6
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 unlimitedw /etc/init.d/httpd. Nie wymaga to ponownego uruchomienia serwera.
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 limituKaż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.
W systemie OS X te same dane muszą być ustawione w /etc/sysctl.conf.
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.
źródło
2048
ale nie jako4500
dlaczego? zobacz toulimit
. 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.
źródło
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 1024ulimit -a
. Zmieniłem wildcare i dodałem*
wnętrzelimits.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
następnie zaloguj się jako użytkownik sieci
2) Edytuj następujące dwa pliki dla użytkownika
Dołącz .bashrc i .bash_profile plik uruchamiając
3) Wyloguj się, a następnie zaloguj ponownie i sprawdź, czy zmiany zostały wprowadzone poprawnie:
To i oni bum, bum bum.
źródło
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
Spróbować umieścić
ulimit -s unlimited
w/etc/init.d/httpd
. Nie wymaga to ponownego uruchomienia serwera.źródło