504 Gateway Timeout kļūda lietojumprogrammā Nginx nozīmē, ka serveris, kurā darbojas Nginx, nav varējis saņemt atbildi no starpniekserveri noteiktā laika periodā. Tas parasti notiek tāpēc, ka starpniekserveris nespēj apstrādāt pieprasījumu norādītajā laikā vai arī tāpēc, ka starp Nginx un starpniekserveri ir sakaru problēmas.
Kļūda rodas, ja Nginx serveris darbojas starpniekservera režīmā. Tas notiek, ja tiek izmantots php-fpm vai Apache. Ja to tulkojam no angļu valodas uz krievu valodu, iegūstam šādu tekstu - ir pārsniegts laiks, kas vajadzīgs, lai gaidītu atbildi no servera.
Šādai uzvedībai ir vairāki iemesli:
Tagad parunāsim par to, ko jūs varat darīt un kā novērst 504 Gateway Timeout kļūdu.
Pirmais, ko izmēģināt praksē, ir tas, ka, ja jūsu serverim, php-fpm vai apache trūkst sistēmas resursu, piemēram, atmiņas vai procesora, apskatiet brīvo
RAM, izmantojot free komandu:
$ free -h
Procesora noslodzi varat noskaidrot, izmantojot komandu htop
:
$ htop
Ja redzat, ka PHP aizņem visu CPU laiku, tas nozīmē, ka problēma ir servera resursos. Varat mēģināt tikt galā ar vietnes dzinēju, optimizēt resursus vai izvēlēties jaudīgu VPS serveri.
Otrais variants - ja tas bija plānots tā, lai skripts darbotos ilgu laiku. Šajā gadījumā jums ir jākonfigurē Nginx, lai gaidītu atbildi no Apache vai php-fpm. Lai atrisinātu problēmu php-fpm gadījumā, jums tikai jāpievieno divas rindas fastgci konfigurācijas blokā:
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
300 nozīmē 300 sekundes, lielākajai daļai skriptu tas ir pietiekami, taču vajadzības gadījumā nav grūti iestatīt arī vairāk. Kļūda 504 var rasties arī tad, ja Nginx tiek izmantots kā starpniekserveris Apache vai jebkuram citam tīmekļa serverim, tad arī ir jākonfigurē starpnieka gaidīšanas laiks.
Pievienojiet šīs rindas servera
sadaļā:
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
Šajā gadījumā mums ir iestatīts 600 sekunžu gaidīšanas laiks.
Tagad mums jārestartē Nginx:
$ sudo systemctl restart nginx
Vēl viens iemesls un tā risinājums, ja skripts karājas. Ja skriptu palaidīsiet paši, uzreiz redzēsiet, kas pakāries, bet, ja ar šādu kļūdu saskaras lietotāji, tā ir nopietnāka problēma. Jūs varat redzēt, vai jūsu lietotāji sastopas ar šādām kļūdām un kur tās rodas, izmantojot komandu:
$ fgrep -i " 504 " /var/log/nginx/access.log
Sīkāku informāciju dažkārt var redzēt error.log:
$ fgrep -i " 504 " /var/log/nginx/error.log
Turklāt, ja problēma ir php-fpm, varat izsekot, kuri skripti darbojas lēni, izmantojot iebūvēto funkciju slow-log
.
Lai to aktivizētu, pievienojiet pūla konfigurācijai šādas rindas:
$ sudo vi /etc/php-fpm.d/www.conf
slowlog = /var/log/php-fpm/www-slow.log
request_slowlog_timeout = 5s
Ar to instrukcija ir pabeigta.
Apply the discount by inserting the promo code in the special field at checkout:
Apply the discount by inserting the promo code in the special field at checkout: