|
W ciągu ostatnich kilku dni pojawiło się wiele problemów z Nginx 502 w sieci i myślałem, że to problem Nginx, tak jak wielu na początku.
Web korzysta z architektury nginx+php, a strona nie była dostępna od dawna, więc optymalizacja to w zasadzie tylko wstępna konfiguracja.
Sprawdzając php-fpm.log, znalazłem ostrzeżenia, które zasadniczo zbiegły się z momentem zawieszenia strony. Zacznę tutaj.
Na początku szukałem też jakiejś dokumentacji, ale następnego dnia nadal pojawił się problem. Później sprawdziłem plik konfiguracyjny i przetłumaczyłem go (Baidu), a angielskie podstawy nie były dobre. Moduł PM jest podobny do modułu Apache, który jest statyczny i dynamiczny.
Wiele zmian wspomnianych w Internecie opiera się głównie na dynamice, ale nie mówią, jak zdefiniować ten moduł. Dlatego każdy powinien przyjrzeć się bliżej plikowi konfiguracyjnymu przy użyciu dynamicznego i statycznego pm = statyczny
; Liczba procesów potomnych do utworzenia, gdy pm jest ustawiony na 'statyczny' oraz
; Maksymalna liczba procesów potomnych, gdy PM jest ustawiony na 'dynamiczny' lub 'na żądanie'.
; Ta wartość wyznacza limit liczby jednoczesnych żądań, które będą
; podany. Odpowiednik dyrektywy ApacheMaxClients z mpm_prefork.
; Równoważne zmiennej środowiskowej PHP_FCGI_CHILDREN w oryginalnym PHP
; CGI. Poniższe domyślne ustawienia opierają się na serwerze bez dużych zasobów. Nie
; Zapomnij o dostosowywaniu PM.* do swoich potrzeb.
; Uwaga: Używane, gdy pm jest ustawiony na 'statyczny', 'dynamiczny' lub 'na żądanie'
; Uwaga: Ta wartość jest obowiązkowa.
pm.max_dzieci = 300
; Liczba procesów potomnych utworzonych podczas uruchamiania.
; Uwaga: Używany tylko wtedy, gdy pm jest ustawiony na 'dynamiczny'
; Domyślna wartość: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
;p m.start_servers = 50
; Wymagana minimalna liczba bezczynnych procesów serwerowych.
; Uwaga: Używany tylko wtedy, gdy pm jest ustawiony na 'dynamiczny'
; Uwaga: Obowiązkowe, gdy pm jest ustawione na 'dynamiczne'
;p m.min_spare_servers = 20
; Pożądana maksymalna liczba bezczynnych procesów serwerowych.
; Uwaga: Używany tylko wtedy, gdy pm jest ustawiony na 'dynamiczny'
; Uwaga: Obowiązkowe, gdy pm jest ustawione na 'dynamiczne'
;pm.max_spare_servers = 500
; Liczba sekund, po której proces bezczynny zostaje zabity.
; Uwaga: Używa się tylko, gdy pm jest ustawione na 'ondemand'
; Domyślna wartość: 10 sekund
pm.process_idle_timeout = 10s;
; Liczba żądań, które każdy proces potomny powinien wykonać przed odradzaniem.
; Może to być przydatne do obejścia wycieków pamięci w bibliotekach firm trzecich. Dla
; Nieskończone przetwarzanie żądań określ '0'. Równoważne PHP_FCGI_MAX_REQUESTS.
; Domyślna wartość: 0
pm.max_requests = 10240
Czerwone pole to sposób na jego zdefiniowanie, a następnie ustawienie parametrów zgodnie z sytuacją serwera
Jeśli użyjesz parametru statycznego pm.max_children, zadziała, reszta nie. Dynamika jest odwrotna.
2G pamięci pm.max_children jest włączone na około 50 razy, co jest konieczne do dostosowania do rzeczywistej sytuacji.
Jeśli są jakieś niedociągnięcia, chciałbym podzielić się swoimi opiniami, 502 rozwiązania.
|