Lahendus 502 halva lüüsi ja 504 lüüsi ajalõpu veale Linuxi serveris
Samm-sammuline juhend Nginxi, Apache, PHP-FPM ja teenuse ajalõpu probleemide lahendamiseks.
veebisaitidel nähtud 502 Bad Gateway ja 504 Gateway Timeout vead tekivad tavaliselt seetõttu, et veebiserver ei saa tagateenuselt õiget vastust. See teenus võib olla PHP-FPM, Apache taustaprogramm, Node.js rakendus, mängupaneeli API teenus või mõni muu puhverserveri taga olev rakendus.
Need vead on eriti levinud hostimise, mängupaneeli, WHMCS-i, Pterodactyli, kohandatud halduspaneeli ja veebipõhiste käivitussüsteemide puhul.
1. Erinevus 502 ja 504 vea vahel
- 502 Bad Gateway: Veebiserver ei saa taustateenusega ühendust luua või saab moonutatud vastuse.
- 504 lüüsi ajalõpp: Taustateenus näib reageerivat, kuid vastust ei tagastata õigeaegselt.
Seega on 502 pigem ühenduse/teenuse krahh ja 504 aegluse või ajalõpu probleem.
2. Teenuse olekute kontrollimine
Kõigepealt kontrollige, kas veebiserver ja PHP-teenused töötavad.
systemctl status nginx systemctl status apache2 systemctl status php-fpm
CentOS-i, AlmaLinuxi või Rocky Linuxi süsteemides võib PHP-FPM-teenuse nimetus olla:
systemctl status php-fpm systemctl status httpd
Kui teenus on peatunud, taaskäivitage see:
systemctl restart nginx systemctl restart php-fpm
3. Logifailide ülevaatamine
Vigade 502 ja 504 arvamine pole õige. Logifail näitab vea tegelikku põhjust.
tail -n 100 /var/log/nginx/error.log tail -n 100 /var/log/apache2/error.log
CentOS-põhistes süsteemides:
tail -n 100 /var/log/httpd/error_log
Logides on näha järgmised väited:
- connect() ebaõnnestus: Taustteenusega ei saa ühendust luua.
- ülesvoolu aegunud: Taustateenus vastab hilja.
- ühendamisest keelduti: Teenus ei tööta või edastatakse valesse porti.
- luba keelatud: Pistikupesa või faili loaga on probleem.
4. PHP-FPM pesa või pordi juhtimine
Nginx ühendub PHP-FPM-iga pistikupesa või pordi kaudu. PHP-FPM tee Nginxi konfiguratsioonifailis ja tegelik PHP-FPM kuulamisväärtus peavad olema samad.
grep -R "fastcgi_pass" /etc/nginx/sites-enabled/ grep -R "listen =" /etc/php/*/fpm/pool.d/www.conf
Näiteks kui Nginx kasutab:
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
Sama pesa tuleks kuulata PHP-FPM poolel:
listen = /run/php/php8.2-fpm.sock
5. Ajalõpu sätete suurendamine
504 vead võivad tekkida suurtes töötlemispaneelides, mänguturgudel, API-des või aeglaselt töötavates PHP-skriptides. Nginxi ajalõpu väärtusi saab suurendada.
nano /etc/nginx/nginx.conf
http-plokile või vastavale serveriplokile saab lisada järgmised väärtused:
proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; fastcgi_read_timeout 300;
Testige sätteid ja taaskäivitage Nginx:
nginx -t systemctl restart nginx
6. PHP-FPM protsessipiirangute kontrollimine
Kui liiklus suureneb, võivad PHP-FPM tehingulimiidid olla ebapiisavad. Sel juhul pannakse päringud järjekorda ja tekib ajalõpp.
nano /etc/php/8.2/fpm/pool.d/www.conf
Näidisseaded:
pm = dynamic pm.max_children = 30 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 10
Neid väärtusi tuleks kohandada vastavalt serveri RAM-i mahule. Liiga kõrge väärtuse määramine suurendab RAM-i tarbimist.
Levinud vead
- Seadete muutmine logifaili vaatamata
- Nginxi pesa teed ei värskendata, kuigi PHP versioon on muutunud
- Tegelikku aeglast päringut ei parandata ajalõpu suurendamisega
- PHP-FPM piirangute suurendamine ilma RAM-i arvutamata
- Teenuse taaskäivitamine ilma Nginxi konfiguratsiooni testimata
KKK
Kas vea 502 põhjustab alati Nginx?
Ei. Nginx näitab ainult viga. Tõeline probleem võib olla PHP-FPM-is, Apache'i taustaprogrammis, rakenduses Node.js või mõnes muus teenuses.
Kas ajalõpu suurendamine on 504 vigade lõplik lahendus?
Mitte alati. Ajalõpu suurendamine pakub ajutist leevendust. Tõeline lahendus on aeglase päringu, raske töötlemise või jõudlusprobleemi leidmine.
Kas PHP-FPM-i taaskäivitamine on ohutu?
See on üldiselt ohutu, kuid aktiivsed päringud võivad lühiajaliselt mõjuda. Hõivatud süsteemides tuleks eelistada vähese liiklusega tunde.
Tulemuslikkuse soovitused
- Kontrollige regulaarselt PHP-FPM versiooni ja pesa teed.
- Uurige aeglaseid päringuloge veebipaneelis ja API-teenustes.
- Kui RAM on ebapiisav, ärge suurendage PHP-FPM max_children väärtust alateadlikult.
- Vähendage taustakoormust vahemälusüsteemi abil.
- Logrotate abil saate hallata vealogisid, enne kui need kasvavad.
See artikkel on spetsiaalselt ette valmistatud PvPServeri jaoks.