Bendras būsenos kodo 504 paaiškinimas
TPTTP 504 Gateway Timeout klaida atsiranda, kai serveris bando atsakyti į kliento užklausą, tačiau per pagrįstą laiką to padaryti negali. Ši klaida paprastai vadinama "gateway timeout", nes dažnai pasitaiko, kai tarp kliento ir serverio tarpininkaujantis proxy serveris arba gateway negali prisijungti arba gauti atsakymo iš serverio. To priežastys gali būti įvairios, pavyzdžiui, serverio perkrovimas, tinklo problemos arba nepakankama tarpinio serverio ar vartų konfigūracija.
.HTTP būsenos kodo 504 specifikacija
Šaltinis / citata iš: HTTP būsenos kodas 504 Gateway Timeout nurodytas 6.6.5 skirsnyje 6.6.5.
HTTP protokolas
Kaip naudojant PHP išmesti 504 būsenos kodą?
Norint žiniatinklio puslapyje nurodyti HTTP būsenos kodą 504, galima naudoti PHP funkciją http_response_code. Sintaksė tokia: http_response_code(504) (PHP 5 >= 5.4.0, PHP 7, PHP 8)
HTTP būsenos kodo 504 testavimas
Kad kliento pusėje būtų galima rodyti HTTP būsenos kodą (šiuo atveju 504 Gateway Timeout) ir kitą informaciją, kūrimo konsolę reikia atidaryti klavišu F12. Tada pereikite prie skirtuko "Network" (tinklas). Dabar galima atidaryti puslapį, tinklo skirtuke turi būti matoma svetainė (pavyzdys index.php). Ją reikia pasirinkti, o tada reikia pasirinkti skyrių Herder (Herderis). Tada naudotojas matys tokį rezultatą:
URL: https://http-statuscode.com/errorCodeExample.php?code=504
Statusas: 504 Gateway Timeout
Šie: Network
IP adresas: XX.XX.XX.XX
Kaip išspręsti 504 būsenos kodo problemą?
Galimos kelios galimos HTTP klaidos 504 Gateway Timeout "Gateway Timeout" priežastys, pavyzdžiui:
- Serverio perkrova: Jei serveris gauna per daug užklausų ir negali į jas atsakyti per priimtiną laiką, gali atsirasti laiko limito klaida. Tai galima išspręsti padidinus serverio mastą arba pridėjus išteklių, pavyzdžiui, procesoriaus, operatyviosios atminties ar saugyklos.
- Tinklo problemos: Laiko limito klaida taip pat gali atsirasti, jei yra tinklo ryšio tarp kliento ir serverio problemų. Tai galima išspręsti patikrinus tinklo ryšį, maršrutizatoriaus ar ugniasienės konfigūracijas arba iš naujo paleidus tinklo komponentus.
- Proxy arba tarpinio serverio problemos: Tarp kliento ir serverio tarpininkaujantis tarpinis serveris arba tarpinis serveris taip pat gali sukelti laiko praleidimo klaidą. Tai galima išspręsti patikrinus ir pakoregavus tarpinio serverio arba šliuzo nustatymus.
- Lėtai veikianti programa arba duomenų bazė: Jei programa arba duomenų bazė veikia lėtai, tai taip pat gali sukelti laiko limito klaidą. Tai galima išspręsti optimizuojant programą arba duomenų bazę.
Sprendžiant problemą galima imtis šių priemonių:
- Patikrinkite serverio būseną ir įsitikinkite, kad jis nėra perkrautas.
- Patikrinkite tinklo ryšį ir įsitikinkite, kad jis yra stabilus ir patikimas.
- Patikrinkite tarpinių serverių ar šliuzų konfigūraciją ir prireikus ją pakoreguokite.
- Optimizuokite taikomąją programą ar duomenų bazę, kad pagerėtų jos veikimas.
- Tinklo komponentų ar serverių paleidimas iš naujo taip pat gali padėti išspręsti problemą.
Daugeliu atvejų problemą gali išspręsti šių priemonių derinys.
Kaip sukurti savo klaidų puslapį, kuriame būtų rodomas būsenos kodas 504
Apache Webserver
Interneto serveris "Apache" yra vienas iš labiausiai paplitusių interneto svetainių serverių. Norėdami sukurti savo 504 Gateway Timeout klaidos puslapį "Apache", šiame faile reikia atlikti toliau nurodytus pakeitimus.
NGINX Webserver
Panašiai kaip ir žiniatinklio serveris "Apache", "NGINX" taip pat plačiai naudojamas internete. Norėdami sukurti savo 504 Gateway Timeout klaidos puslapį "NGINX", šiame faile reikia atlikti toliau nurodytus pakeitimus.
location = /504.html {
root /usr/share/nginx/html;
internal;
}
504 būsenos kodo suderinamumas su naršyklėmis
Chrome | no data |
Edge | no data |
Firefox | no data |
Opera | no data |
Safari | no data |
Chrome Android | no data |
Firefox for Android | no data |
Opera Android | no data |
Safari on iOS | no data |
Internet | no data |
WebView Android | no data |
Konstantos programavimo kalbose
HttpStatusCode.GatewayTimeout
http.StatusGatewayTimeout
Response::HTTP_GATEWAY_TIMEOUT
httplib.GATEWAY_TIMEOUT
http.client.GATEWAY_TIMEOUT
http.HTTPStatus.GATEWAY_TIMEOUT
:gateway_timeout