Nginxi värava 504 Timeout-viga tähendab, et Nginxi kasutav server ei suutnud määratud aja jooksul proxy-serverilt vastust saada. See juhtub tavaliselt seetõttu, et proxy-server ei suuda päringut ettenähtud aja jooksul töödelda või on Nginxi ja proxy-serveri vahelised ühendusprobleemid.
Viga ilmneb, kui Nginx'i server töötab proxy-režiimis. See juhtub, kui kasutatakse php-fpm või Apache'i. Kui tõlkida see inglise keelest vene keelde, siis saame järgmist - serveri vastuse ootamise aeg on ületatud.
Sellise käitumise põhjuseid on mitu:
Räägime nüüd sellest, mida saab teha ja kuidas parandada 504 Gateway Timeout viga.
Esimene asi, mida praktikas proovida, on see, et kui teie serveril, php-fpm või apache'il on puudu süsteemiressursse, näiteks mälu või protsessor, vaadake vaba
RAM-i, kasutades käsku free:
$ free -h
CPU koormust saate teada käsuga htop
:
$ htop
Kui näete, et PHP võtab kogu protsessori aega, siis tähendab see, et probleem on serveri ressurssides. Võite proovida tegeleda saidi mootoriga, optimeerida ressurssi või valida võimsa VPS-serveri.
Teine võimalus - kui see oli planeeritud nii, et skript töötas pikka aega. Sellisel juhul peate konfigureerima Nginxi ootama Apache'i või php-fpm-i vastust. Probleemi lahendamiseks php-fpm puhul tuleb lisada fastgci konfiguratsiooniplokki vaid kaks rida:
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
300 tähendab 300 sekundit, enamiku skriptide puhul piisab sellest, kuid vajadusel ei ole raske ka rohkem määrata. Samuti võib 504 viga tekkida, kui Nginx'i kasutatakse Apache'i või mõne muu veebiserveri proxy'na, siis tuleb samuti konfigureerida proxy ooteaeg.
Lisa need read serveri
sektsiooni:
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
Antud juhul on meil ooteaeg 600 sekundit.
Nüüd peame Nginxi taaskäivitama:
$ sudo systemctl restart nginx
Teine põhjus ja selle lahendus, kui skript ripub. Kui te käivitate skripti ise, siis näete kohe, mis ripub, aga kui selline viga tekib kasutajatel, siis on tegemist tõsisema probleemiga. Saate näha, kas teie kasutajatel esineb selliseid vigu ja kus need tekivad, kasutades käsku:
$ fgrep -i " 504 " /var/log/nginx/access.log
Üksikasjalikumat teavet saab mõnikord näha error.logis
:
$ fgrep -i " 504 " /var/log/nginx/error.log
Lisaks, kui probleemiks on php-fpm, saate jälgida, millised skriptid aeglaselt töötavad, kasutades sisseehitatud slow-log
funktsiooni.
Selle aktiveerimiseks lisage oma basseini konfiguratsiooni järgmised read:
$ sudo vi /etc/php-fpm.d/www.conf
slowlog = /var/log/php-fpm/www-slow.log
request_slowlog_timeout = 5s
See lõpetab juhendi.