Jak zmienić limit liczby otwartych plików w Linuksie? [zamknięte]
Podczas uruchamiania mojej aplikacji czasami pojawia się błąd o too many files open
.
Running ulimit -a
informuje, że limit wynosi 1024. Jak zwiększyć limit powyżej 1024?
Edit
ulimit -n 2048
powoduje błąd uprawnień.
4 answers
Zawsze możesz spróbować zrobić ulimit -n 2048
. Spowoduje to tylko zresetowanie limitu dla bieżącej powłoki, a podany numer nie może przekroczyć twardego limitu
Każdy system operacyjny ma inną konfigurację twardego limitu w pliku konfiguracyjnym. Na przykład, limit otwartych plików Solaris może być ustawiony podczas rozruchu Z /etc / system.
set rlim_fd_max = 166384
set rlim_fd_cur = 8192
Na OS X, te same dane muszą być ustawione w /etc / sysctl.conf.
kern.maxfilesperproc=166384
kern.maxfiles=8192
Pod Linuksem, te ustawienia są często w / etc / security / limits.conf.
Istnieją dwa rodzaje ograniczeń:
- soft limity są po prostu obecnie egzekwowane limity
- twarde limity oznaczają maksymalną wartość, której nie można przekroczyć, ustawiając limit miękki
Miękkie limity mogą być ustawiane przez każdego użytkownika, podczas gdy twarde limity są zmieniane tylko przez roota. Ograniczenia są własnością procesu. Są dziedziczone, gdy tworzony jest proces potomny, więc limity dla całego systemu powinny być ustawione podczas inicjalizacja systemu w skryptach init i limity użytkowników powinny być ustawiane podczas logowania użytkownika, na przykład przy użyciu pam_limits.
Często są ustawiane wartości domyślne, gdy maszyna uruchamia się. Tak więc, nawet jeśli możesz zresetować ulimit w pojedynczej powłoce, może się okazać, że zresetuje się ona z powrotem do poprzedniej wartości po ponownym uruchomieniu. Jeśli chcesz zmienić domyślne ustawienia, możesz użyć grep skryptów ROZRUCHOWYCH dla komend ulimit existence.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-26 06:29:14
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 znajduje się plik 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 linię do pliku limits.conf
.
* hard nofile 10000
Następnie wyloguj się i ponownie zaloguj do swojego systemu i powinieneś być w stanie to zrobić:
ulimit -n 10000
Bez błędu uprawnień.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-14 15:53:51
1) Dodaj następujący wiersz do /etc/security/limits.conf
webuser hard nofile 64000
Następnie zaloguj się jako webuser
su - webuser
2) Edycja następujących dwóch plików dla webuser
Dołącz .bashrc i .bash_profile file by running
echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
3) Wyloguj się, a następnie zaloguj się ponownie i sprawdź, czy zmiany zostały wprowadzone poprawnie:
$ ulimit -a | grep open
open files (-n) 64000
To wszystko i bum, bum, bum.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-11 17:08:41
Jeśli niektóre z Twoich usług łączą się z ulimits, czasami łatwiej jest umieścić odpowiednie polecenia w skrypcie init serwisu. Na przykład, gdy Apache zgłasza
[alert] (11) zasób tymczasowo niedostępny: apr_thread_create: nie można utworzyć wątku roboczego
Spróbuj umieścić ulimit -s unlimited
w /etc/init.d/httpd
. Nie wymaga to ponownego uruchomienia serwera.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-27 22:37:10