|
V posledních dnech se na webu objevilo mnoho problémů s Nginx 502 a já jsem si zpočátku myslel, že je to problém Nginx, stejně jako mnoho lidí.
Web používá architekturu nginx+php a web už dlouho nebyl online, takže optimalizace je v podstatě jen počáteční konfigurace.
Při kontrole php-fpm.log jsem našel varování, která v podstatě odpovídala době, kdy byl web pozastaven. Začnu tady.
Nejdřív jsem také hledal nějakou dokumentaci, ale problém byl i další den. Později jsem zkontroloval konfigurační soubor a přeložil ho (Baidu), a anglický základ nebyl dobrý. PM modul je podobný modulu Apache, který je statický a dynamický.
Mnoho úprav zmíněných na internetu je většinou založeno na dynamice, ale neuvádí, jak tento modul definovat. Proto by se měl každý při používání dynamického a statického souboru podívat blíže na konfigurační soubor pm = statický
; Počet podprocesů, které mají být vytvořeny, když je pm nastaven na 'statické' a
; Maximální počet podprocesů, když je PM nastaven na 'dynamický' nebo 'na vyžádání'.
; Tato hodnota určuje limit počtu současných požadavků, které budou
; obsloužen. Ekvivalent direktivy ApacheMaxClients s mpm_prefork.
; Ekvivalent proměnné PHP_FCGI_CHILDREN prostředí v původním PHP
; CGI. Níže uvedené výchozí nastavení jsou založena na serveru bez větších zdrojů. Ne
; Zapomeňte upravovat PM.* podle svých potřeb.
; Poznámka: Používá se, když je pm nastaven na 'statické', 'dynamické' nebo 'na vyžádání'
; Poznámka: Tato hodnota je povinná.
pm.max_dětí = 300
; Počet podprocesů vytvořených při startu.
; Poznámka: Používá se pouze tehdy, když je pm nastaveno na 'dynamický'
; Výchozí hodnota: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
;p m.start_servers = 50
; Požadovaný minimální počet nečinných serverových procesů.
; Poznámka: Používá se pouze tehdy, když je pm nastaveno na 'dynamický'
; Poznámka: Povinné, když je pm nastaveno na 'dynamické'
;p m.min_spare_servers = 20
; Požadovaný maximální počet nečinných serverových procesů.
; Poznámka: Používá se pouze tehdy, když je pm nastaveno na 'dynamický'
; Poznámka: Povinné, když je pm nastaveno na 'dynamické'
;pm.max_spare_servers = 500
; Počet sekund, po kterých je nečinný proces ukončen.
; Poznámka: Používá se pouze tehdy, když je pm nastaveno na 'ondemand'
; Výchozí hodnota: 10 sekund
pm.process_idle_timeout = 10 šilinků;
; Počet požadavků, které by měl každý podproces vykonat před znovuzrozením.
; To může být užitečné při obcházení úniků pamětí v knihovnách třetích stran. Pro
; Nekonečné zpracování požadavků specifikujte '0'. Ekvivalent PHP_FCGI_MAX_REQUESTS.
; Výchozí hodnota: 0
pm.max_requests = 10240
Červené pole je způsob, jak ho definovat, a pak nastavit parametry podle situace na serveru
Pokud použijete parametr statický pm.max_children, bude to fungovat, ostatní ne. Dynamika je opačná.
2G paměť pm.max_children je zapnutá asi na 50 %, což je nutné upravit podle aktuální situace.
Pokud je nějaký nedostatek, rád bych vám dal své názory, 502 řešení.
|