|
V zadnjih nekaj dneh je bilo na spletu veliko težav z Nginx 502, in sprva sem mislil, da je težava v Nginxu, kot mnogi drugi.
Splet uporablja arhitekturo nginx+php, spletna stran pa že dolgo ni bila na spletu, zato je optimizacija v bistvu le začetna konfiguracija.
Preverjanje php-fpm.log je našel opozorila, ki so v bistvu sovpadala s časom, ko je bila spletna stran začasno ukinjena. Začel bom tukaj.
Sprva sem tudi iskal dokumentacijo, a je bil naslednji dan še vedno težava. Kasneje sem preveril konfiguracijsko datoteko in jo prevedel (Baidu), angleška osnova pa ni bila dobra. PM modul je podoben Apachejevemu modulu, ki je statičen in dinamičen.
Veliko prilagoditev, omenjenih na internetu, temelji predvsem na dinamiki, vendar ne pojasnjujejo, kako definirati ta modul. Zato naj si vsi podrobneje oglejte konfiguracijsko datoteko, ko uporabljate dinamično in statično pm = statična
; Število podprocesov, ki jih je treba ustvariti, ko je pm nastavljen na 'statičen' in
; Največje število podprocesov, ko je PM nastavljen na 'dinamično' ali 'na zahtevo'.
; Ta vrednost določa omejitev števila sočasnih zahtev, ki bodo
; postrežen. Enakovredno direktivi ApacheMaxClients z mpm_prefork.
; Enakovredno PHP_FCGI_CHILDREN okoljske spremenljivki v izvirnem PHP-ju
; CGI. Spodnje privzete nastavitve temeljijo na strežniku brez veliko virov. Ne
; Pozabi prilagoditi PM.* glede na svoje potrebe.
; Opomba: Uporablja, ko je pm nastavljen na 'statičen', 'dinamičen' ali 'na zahtevo'
; Opomba: Ta vrednost je obvezna.
pm.max_otrok = 300
; Število podprocesov, ustvarjenih ob zagonu.
; Opomba: Uporablja se samo, ko je pm nastavljen na 'dinamično'
; Privzeta vrednost: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
;p m.start_servers = 50
; Želeno minimalno število neaktivnih strežniških procesov.
; Opomba: Uporablja se samo, ko je pm nastavljen na 'dinamično'
; Opomba: Obvezno, ko je pm nastavljen na 'dinamično'
;p m.min_spare_servers = 20
; Želeno največje število neaktivnih strežniških procesov.
; Opomba: Uporablja se samo, ko je pm nastavljen na 'dinamično'
; Opomba: Obvezno, ko je pm nastavljen na 'dinamično'
;pm.max_rezervni_strežniki = 500
; Število sekund, po katerih se neaktivni proces ustavi.
; Opomba: Uporablja se samo, ko je pm nastavljen na 'ondemand'
; Privzeta vrednost: 10s
pm.process_idle_timeout = 10s;
; Število zahtevkov, ki jih mora vsak podredni proces izvesti pred ponovnim rojstvom.
; To je lahko koristno za obhod puščanj pomnilnika v knjižnicah tretjih oseb. Za
; Neskončna obdelava zahtevkov določi '0'. Enakovredno PHP_FCGI_MAX_REQUESTS.
; Privzeta vrednost: 0
pm.max_requests = 10240
Rdeče polje je način, kako ga definirati, nato pa parametre nastaviti glede na situacijo na strežniku
Če uporabiš parameter statični pm.max_otrok, bo delovalo, ostalo pa ne. Dinamika je ravno nasprotna.
2G pomnilnik pm.max_children je približno 50 vklopljen, kar je potrebno prilagoditi glede na dejansko situacijo.
Če je kakšna pomanjkljivost, bi vas prosil, da podate svoje mnenje, 502 rešitve.
|