nginx uLimit „połączenia_procesowe przekraczają limit zasobów otwartego pliku: 1024”

15

Wciąż pojawia się ten błąd, który nginx/error.logdoprowadza mnie do szału:

8096 worker_connections exceed open file resource limit: 1024

Próbowałem wszystkiego, co mogłem wymyślić i nie mogę zrozumieć, co ogranicza nginx tutaj. Czy możesz powiedzieć, czego mi brakuje?

nginx.conf ma to:

worker_processes 4;
events {
        worker_connections 8096;
        multi_accept on;
        use epoll;
}

Zmieniłem Ulimit mojego systemu w security/limits.confnastępujący sposób:

# This is added for Open File Limit Increase
*               hard    nofile          199680
*               soft    nofile          65535

root            hard    nofile          65536
root            soft    nofile          32768

# This is added for Nginx User
nginx           hard    nofile          199680
nginx           soft    nofile          65535

Nadal pokazywał błąd. Próbowałem też edytować /etc/default/nginxi dodałem ten wiersz:

ULIMIT="-n 65535"

Nadal wyświetla ten sam błąd. Nie możesz dowiedzieć się, co ogranicza połączenie procesu roboczego Nginx tylko do 1024. Czy możesz mi wskazać?

Mam Debian 7 + nginx

Neel
źródło

Odpowiedzi:

30

Ustaw worker_rlimit_nofile 65535;w nginx.conf w głównym kontekście.

Xavier Lucas
źródło
1
Otóż ​​to! To naprawiło to. Och, jesteś wybawcą. Działa teraz, nawet jeśli ULimit nie jest ustawiony ręcznie /etc/default/nginx file. Niesamowite. Dziękuję @Xaviour
Neel
1
dobrze zrobione Xavier.
Dave Holland
@Xavier usunął błąd msg, ale czy możesz wyjaśnić, dlaczego to działa bez zmiany ulimit, jak wspomniano w odpowiedzi poniżej? Wyszukiwania google nakazują zmianę ulimit w limit.conf lub systcl.conf, ale żadne nie działa dla mnie.
Bsienn
2

Zostań użytkownikiem:

su - nginx

Sprawdź limity:

ulimit -Hn
ulimit -Sn

Edytuj liczbę plików, które system plików pozwoli ci otworzyć:

vi /etc/sysctl.conf
fs.file-max = 70000

załaduj swoje zmiany:

sysctl -p

Sprawdź, czy to pomoże.

Dave Holland
źródło
Korzystam z init i nie zainstalowałem systemctl. Czy to coś zmieni?
Neel
Kiedy zmieniłem się na użytkownika Nginx, ulimit -Hn wyświetla się tam poprawnie. Następnie sprawdziłem init.d/nginxi sprawdza, czy ULIMIT jest ustawiony w folderze domyślnym (gdzie jest już ustawiony), a następnie powinien ustawić tę wartość, ale nie robi:Check if the ULIMIT is set in /etc/default/nginx
Neel
Po zmianie pliku-max i po uruchomieniu sysctl -pUruntu 18.04.2 zawiesza się, powoduje otwarcie zbyt wielu plików i nie uruchamia się, musiałem usunąć kod w bezpiecznym rozruchu, aby system uruchomił się ponownie.
Bsienn