Earráid 504 Ciallaíonn Teorainn Ama Geata i Nginx nach raibh an freastalaí a bhí ag rith Nginx in ann freagra a fháil ón seachfhreastalaí laistigh den tréimhse ama sonraithe. Tarlaíonn sé seo de ghnáth toisc nach bhfuil an seachfhreastalaí in ann an t-iarratas a phróiseáil laistigh den am tugtha nó mar gheall ar fhadhbanna ceangail idir Nginx agus an seachfhreastalaí.
Tarlaíonn an earráid nuair a bhíonn freastalaí Nginx ag rith i mód seachfhreastalaí. Tarlaíonn sé seo nuair a úsáideann php-fpm nó Apache. Má aistrímid ó Bhéarla go Rúisis, gheobhaimid an méid seo a leanas - sáraíodh an teorainn ama fanacht le freagra ón bhfreastalaí.
Tá roinnt cúiseanna leis an iompar seo:
Anois, déanaimis labhairt faoi cad is féidir a dhéanamh agus conas an earráid 504 Gateway Timeout a réiteach.
Is é an chéad rud ba chóir duit iarracht a dhéanamh go praiticiúil ná mura bhfuil go leor acmhainní córais ag do fhreastalaí, php-fpm nó apache, mar shampla, cuimhne nó próiseálaí, seiceáil an RAM saor in aisce ag baint úsáide as an ordú free
:
$ free -h
Is féidir leat an t-ualach LAP a fháil amach leis an ordú htop
:
$ htop
Má fheiceann tú go bhfuil PHP ag glacadh an t-am LAP ar fad, ansin tá fadhb ann le hacmhainní freastalaí. Is féidir leat triail inneall an tsuímh a dhéanamh amach, an acmhainn a bharrfheabhsú, nó freastalaí VPS cumhachtach a roghnú.
Is é an dara rogha ná má bhí sé beartaithe ionas go n-oibreodh an script ar feadh i bhfad. Sa chás seo, ní mór duit Nginx a chumrú chun fanacht le freagra ó Apache nó php-fpm. Chun an fhadhb a réiteach i gcás php-fpm, ní gá duit ach dhá líne a chur leis an mbloc cumraíochta fastgci:
fastcgi_send_timeout 300; fastcgi_read_timeout 300;
Ciallaíonn 300 300 soicind, don chuid is mó de na scripteanna is leor é seo, ach más gá ní bheidh sé deacair níos mó a shocrú freisin. Chomh maith leis sin, is féidir leis an earráid 504 tarlú nuair a úsáidtear Nginx mar seachfhreastalaí do Apache nó aon fhreastalaí gréasáin eile, ansin ní mór duit freisin a chumrú an t-am istigh seachfhreastalaí.
Cuir na línte seo leis an rannán server
:
proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600;
Sa chás seo, tá teorainn ama de 600 soicind againn.
Anois ní mór dúinn Nginx a atosú:
$ sudo systemctl restart nginx
Cúis eile agus a réiteach má tá an script reoite. Má ritheann tú an script duit féin, feicfidh tú láithreach go bhfuil sé reoite, ach má tharlaíonn earráid den sórt sin i measc úsáideoirí, is fadhb níos tromchúisí é seo. Is féidir leat a fheiceáil má bhíonn earráidí dá leithéid ag d’úsáideoirí agus cá háit a dtarlaíonn siad ag baint úsáide as an ordú:
$ fgrep -i " 504 " /var/log/nginx/access.log
Uaireanta is féidir faisnéis níos mionsonraithe a fheiceáil in error.log
:
$ fgrep -i " 504 " /var/log/nginx/error.log
Ina theannta sin, má tá an fhadhb i php-fpm, is féidir leat a rianú cé na scripteanna atá ag rith go mall ag baint úsáide as an fheidhm slow-log
.
Chun é a ghníomhachtú, cuir na línte seo a leanas le do chumraíocht linne:
$ sudo vi /etc/php-fpm.d/www.conf slowlog = /var/log/php-fpm/www-slow.log request_slowlog_timeout = 5s
Comhlánaíonn sé seo na treoracha.