|
Viime päivinä Nginx 502:n kanssa on ollut paljon ongelmia verkossa, ja aluksi ajattelin, että kyse oli Nginxistä kuten moni muukin.
Verkko käyttää nginx+php-arkkitehtuuria, ja verkkosivusto ei ole ollut verkossa pitkään aikaan, joten optimointi on käytännössä vain alkuasetukset.
Tarkistaessani php-fpm.log löysin varoituksia, jotka käytännössä osuivat samaan aikaan, kun verkkosivusto suljettiin. Aloitan tästä.
Aluksi etsin myös dokumentaatiota, mutta ongelma oli silti seuraavana päivänä. Myöhemmin tarkistin konfiguraatiotiedoston ja käänsin sen (Baidu), ja englanninkielinen perusta ei ollut hyvä. PM-moduuli on samankaltainen kuin Apachen moduuli, joka on staattinen ja dynaaminen.
Monet Internetissä mainituista säädöistä perustuvat pääasiassa dynamiikkaan, mutta niissä ei kerrota, miten tätä moduulia määritellä. Joten kaikkien tulisi tutustua tarkemmin konfiguraatiotiedostoon, kun käytetään dynaamista ja staattista pm = staattinen
; Kun pm asetetaan 'staattiseksi', luodaan lapsiprosessien määrä, ja
; Suurin määrä lapsiprosessoreja, kun PM on asetettu 'dynaamiseksi' tai 'ondemandiksi'.
; Tämä arvo asettaa rajan samanaikaisten pyyntöjen määrälle, jotka ovat
; Palveltu. Vastaava kuin ApacheMaxClients-direktiivi, jossa mpm_prefork.
; Vastaava alkuperäisen PHP:n PHP_FCGI_CHILDREN ympäristömuuttujalle
; CGI. Alla olevat oletusarvot perustuvat palvelimeen, jolla ei ole paljon resursseja. Ei
; Unohda säätää PM.*:ää tarpeisiisi.
; Huomautus: Käytetään, kun pm on asetettu 'staattiseen', 'dynaamiseen' tai 'ondemand'-tilaan
; Huomautus: Tämä arvo on pakollinen.
pm.max_lapsia = 300
; Käynnistyksen yhteydessä luotujen lapsiprosessien määrä.
; Huomautus: Käytetään vain, kun pm on asetettu 'dynaamiseksi'
; Oletusarvo: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
;p m.start_servers = 50
; Haluttu vähimmäismäärä levottomia palvelinprosesseja.
; Huomautus: Käytetään vain, kun pm on asetettu 'dynaamiseksi'
; Huomautus: Pakollinen, kun pm on asetettu 'dynaamiseksi'
;p m.min_spare_servers = 20
; Haluttu maksimimäärä käyttämättömiä palvelinprosesseja.
; Huomautus: Käytetään vain, kun pm on asetettu 'dynaamiseksi'
; Huomautus: Pakollinen, kun pm on asetettu 'dynaamiseksi'
;pm.max_spare_servers = 500
; Sekuntien määrä, jonka jälkeen joukossa oleva prosessi kuolee.
; Huomautus: Käytetään vain, kun pm on asetettu 'ondemand'-tilaan
; Oletusarvo: 10s
pm.process_idle_timeout = 10s;
; Kuinka monta pyyntöä kukin lapsi käsittelee ennen uudelleensyntymistä.
; Tämä voi olla hyödyllistä muistivuotojen kiertämisessä kolmannen osapuolen kirjastoissa. Kuvaaja
; Loputon pyyntöjen käsittely määrittele '0'. Vastaava kuin PHP_FCGI_MAX_REQUESTS.
; Oletusarvo: 0
pm.max_requests = 10240
Punainen kenttä on tapa määritellä se ja asettaa parametrit palvelimen tilanteen mukaan
Jos käytät staattista pm.max_children-parametria, se toimii, muut eivät. Dynamiikka on päinvastainen.
2G-muisti pm.max_children on noin 50 päällä, mikä on tarpeen säätää tilanteen mukaan.
Jos jokin puutteita on, haluaisin sinun jakavan mielipiteenne, 502-ratkaisut.
|