504 gateway time-out wat voor soort fout. Computerhulp

Zeker veel internetgebruikers en computernetwerken Meer dan eens zijn we zo'n onaangename situatie tegengekomen als het verschijnen van een 504 (fout)code in de browser. Niet iedereen begrijpt duidelijk waarom een ​​dergelijke storing optreedt en hoe dit allemaal kan worden opgelost. Laten we eens kijken wat wat is.

Wat betekent de fout ‘504 Gateway time-out’?

Allereerst kan foutcode 504, in zijn eenvoudigste bewoordingen, worden geïnterpreteerd als een time-out voor een reactie op een verzoek dat vanaf de computerterminal van een gebruiker naar een externe server op internet wordt verzonden.

Met andere woorden, het verwerken van dit soort verzoeken heeft eenvoudigweg zijn eigen tijdslimieten gedurende welke de server een antwoord moet sturen. Op verschillende servers deze tijd heeft verschillende betekenissen. Als er een bericht met code 504 (fout) verschijnt, betekent dit in ieder geval dat het bericht simpelweg is verlopen, dat wil zeggen dat er gedurende deze periode geen reactie is ontvangen van de server.

Redenen voor de fout

Laten we nu, zo eenvoudig mogelijk, verdergaan technisch aspect. We krijgen dus fout 504. Wat betekent dit bericht vanuit het oogpunt van interactie tussen de gebruikersterminal en de externe server?

De volgende uitleg lijkt misschien een beetje moeilijk te begrijpen, maar alles is hier eenvoudig. Feit is dat dergelijke mislukkingen zich vooral manifesteren tijdens interactie Apache-platforms en nginx, wanneer de eerste is geïnstalleerd als de laatste server, en de tweede als een middel om inkomende verzoeken te verwerken. Het blijkt dat het gebruikersverzoek niet rechtstreeks aan Apache wordt gericht, maar een voorlopige goedkeuring ondergaat met nginx, waarna het wordt verzonden naar de server die als backend is geïnstalleerd.

Het is duidelijk dat als nginx niet op tijd een reactie ontvangt van de Apache-server, deze in plaats van het verwachte resultaat de gebruiker een bericht geeft met code 504 (error). Dergelijke situaties kunnen echter worden gecorrigeerd, zelfs op de meest elementaire manier.

Code 504 (fout): hoe hiermee om te gaan?

Ondanks de ogenschijnlijke ernst van de 504-fout is er eigenlijk niets mis mee. Als de meest eenvoudige remedie het hervatten van de toegang tot de vereiste bron kan worden opgeroepen regelmatige update pagina's in de internetbrowser die u gebruikt.

Meestal is dit de knop 'Bijwerken' of gebruikt u functietoets F5. Deze regel geldt zonder uitzondering voor alle browsers. Een langere optie is echter mogelijk als de verbinding instabiel is. Het zou heel goed kunnen dat dit binnen is in dit geval u zult het hele systeem of zelfs de router opnieuw moeten opstarten (vooral als u internettoegang via een Wi-Fi-verbinding gebruikt).

Problemen kunnen onder andere ook verband houden met overmatige belasting van de server of de daarop draaiende scripts. Je kunt er niets aan doen - je zult moeten wachten tot de last afneemt. Overigens komen dergelijke situaties in de meeste gevallen heel vaak voor wanneer een zogenaamde DDoS-aanval op de server wordt uitgevoerd, waardoor de server eenvoudigweg geen tijd heeft om deze te verwerken enorm bedrag gelijktijdig binnenkomende verzoeken.

Soms kan het probleem daarin liggen op dit moment de server werkt in proxy- of gateway-modus, waardoor het verzenden van verzoeken beperkt of onmogelijk is. De proxy-instellingen zijn waarschijnlijk verkeerd gegaan - ze moeten worden gecontroleerd of opnieuw worden geïnstalleerd.

Problemen met het installeren van applicaties

Dit is echter niet alles. Heel vaak kan er een installatiefout (code 504) optreden wanneer een applicatie of programma rechtstreeks vanaf internet wordt geïnstalleerd. In dit geval wordt de distributie niet naar de harde schijf gedownload, maar bevindt deze zich op externe server, van waaruit de installatie wordt uitgevoerd.

Het is duidelijk dat als er beperkingen zijn op de verbindingssnelheid of afhankelijk van de prestaties van de bron zelf, een dergelijk proces veel tijd kan duren of zelfs helemaal kan stoppen. Helaas zal de installatie vanaf een bepaald punt niet meer hervat hoeven te worden, maar eerder opnieuw opgestart.

Trouwens, als het wordt nageleefd onjuiste bediening uitvoerbare scripts die verantwoordelijk zijn voor dit proces bij hosting wordt het aanbevolen om het php.ini-bestand te bewerken, waarin u de regel php_max_execution_time moet vinden en wijzigen standaard waarde uitvoeringstijd van 30 seconden tot een hogere waarde. Maar je moet je hier niet door laten meeslepen, anders moet je lang wachten op een reactie. Maar ook bij gebruik specifieke server Als hosting kan zelfs de eigenaar de aanbevolen instellingen achterhalen.

Conclusie

Zoals u al begrijpt, is de foutcode 504 zelf niet kritisch. En dit kan op geen enkele manier wijzen op onregelmatigheden in het werk besturingssysteem(tenzij er een probleem is met virussen). In feite ligt het hele probleem voornamelijk alleen in externe bronnen die mogelijk niet op tijd kunnen reageren. Maar daar is niets mis mee, omdat het probleem in de meeste gevallen vrij eenvoudig wordt opgelost.

Op dit moment hebben we niet bijzonder nagedacht over het werk van hostingdiensten, aangezien de gemiddelde gewone gebruiker technische informatie dit soort dingen zeggen vrijwel niets. Over het algemeen is dit niet nodig.

Wanneer u toegang probeert te krijgen tot de site, ontvangt u een 504-foutmelding met de tekst “ Gateway-time-out. Nginx". Dit bericht verschijnt meestal op sites waar de Nginx-webserver werkt als front-end voor de Apache-server. Wat betekent het?
Ondanks het feit dat de 504-fout wordt uitgegeven door Nginx, is dit niet de oorzaak van het verschijnen ervan, maar vertelt het ons dat het al lang op een antwoord van Apache wacht, maar dat nooit heeft ontvangen. Dit gebeurt meestal in gevallen waarin de server waarop de site zich bevindt erg is hoge belasting en het heeft geen tijd om alle HTTP-verzoeken te verwerken. Hoe dit op te lossen?

Als u een sitebezoeker bent. In dit geval heeft u maar één optie: wacht tot het beheer van de webbron het probleem thuis heeft opgelost. U kunt als eenvoudige bezoeker niets doen. Probeer de pagina regelmatig te bezoeken (elke 2-3 uur). Een kopje is niet nodig! Als de belasting werkelijk wordt overschreden, dan gooi je alleen maar ‘brandstof op het vuur’.
In gevallen waarin u dringend naar de inhoud van een pagina moet kijken, maar er staat “Error 504 Gateway Time-out”, kunt u de in de cache opgeslagen versie gebruiken, die is opgeslagen in de webcache van grote zoekdiensten- Yandex en Google. Om dit te doen, voert u gewoon het paginaadres in de zoekbalk in en selecteert u de optie "Opgeslagen kopie" in het gevonden resultaat.

Als u een sitebeheerder bent. In dit geval zijn er twee opties mogelijk:
A) Je huurt een VPS/VDS en hebt er SSH-toegang toe.
Begin met het opnieuw opstarten van de servers. Ik zal je laten zien hoe je Fedora/CentOS als voorbeeld gebruikt. Start Apache eerst opnieuw op:

Service httpd opnieuw opstarten

Start vervolgens Nginx opnieuw op:

Service nginx opnieuw opstarten

Heeft het niet geholpen? Dan kunt u proberen de time-out te verlengen. Om dit te doen, stelt u de volgende parameter in nginx.conf in:

Keepalive_time-out 60

Standaard is de waarde 0.
Start de webserver opnieuw op en kijk of de situatie is veranderd.
Deze zet kan soms helpen. Maar als de bron erg zwaar wordt belast, vergroot u door het verhogen van de time-out het aantal openstaande http-verbindingen, wat betekent dat u de belasting nog verder verhoogt, wat zeer ongewenst is! Anders zal er een extra voordeel zijn vanwege de overbelasting van httpd-verzoeken.
Daarom moeten we uitzoeken wat zo'n sterke belasting veroorzaakt. Om dit te doen zullen we het commando gebruiken:

Let op de waarden in de regel ‘belastingsgemiddelde’.

Zijn maximale waarde De processor mag niet meer dan het aantal cores hebben. Nou ja, plus/minus 2. Als de waarde groter is dan 10, moet je alarm slaan. Dit gebeurt meestal in het geval van een DDOS-aanval, waardoor Apache verstopt raakt met synchronisatieverzoeken. Gebruik de opdracht netstat om de IP-adressen van de bots te vinden en deze toe te voegen aan de DROP-regels van het Firewall-pakketfilter.
Als Nginx samenwerkt met PHP-FPM op uw bron, treedt de 504-fout heel vaak op vanwege trage scripts. De webserver wacht eenvoudigweg niet op het uitvoeringsresultaat. Het toevoegen van een parameter kan helpen

Fastcgi_read_timeout 300;

naar sectie:

Locatie ~ \.php$ ( .... )

B) Je huurt alleen hosting zonder toegang tot de instellingen ervan.
In deze situatie kunt u zelf niets doen en hoeft u alleen nog maar contact op te nemen met de technische ondersteuning van uw hostingprovider met het verzoek om de 504 Gateway Time-out-fout op te lossen. Gebruikelijk systeembeheerders Hosters helpen gebruikers de oorzaak van het probleem te vinden en op te lossen. Als ze de jouwe naar de hel sturen, is er maar één uitweg: verander de hostingprovider.

Dus op onze website zijn we de 504 Gateway Time-out-fout tegengekomen en weten we niet wat we moeten doen. In dit bericht zal ik proberen een compleet algoritme van acties te beschrijven om dit probleem op te lossen, en ook vertellen over de redenen voor het optreden ervan. Volg de snit!

Dus laten we doorgaan. Laten we eerst eens kijken wat voor soort HTTP-foutcode dit is, of beter gezegd: wat betekent dit? 504 - de vijfhonderdvierde fout, ook bekend als Gateway Timeout, of beter gezegd, in het Russisch klinkt het ongeveer zo: "De tijd voor het passeren van de gateway is verstreken." De code betekent dat de server, wanneer hij als externe gateway of proxyserver werkt, geen tijdige reactie heeft ontvangen van de upstream backend-server waarmee hij contact heeft opgenomen toen hij probeerde aan het verzoek te voldoen.

Deze fout kan men zich gemakkelijk voorstellen interne organisatie uw webserver. Dit is duidelijk een combinatie van twee webservers waarbij de ene fungeert als frontend (frontserver) en de tweede als backend (backserver). En hoogstwaarschijnlijk gebeurt dit in 99% van de gevallen, de nginx-webserver is geïnstalleerd, die fungeert als front-end en er is ook een Apache-server als back-end. Nginx neemt de rol van distributie op zich proxy-server en levert statische gegevens (afbeeldingen, bestanden), en apache verwerkt samen met PHP de dynamiek, en MySQL is ook vlakbij. En je krijgt de 504 Gateway Time-out-fout van nginx.

Hoe dan ook, laten we weer aan de slag gaan. De situatie is heel duidelijk! Gedurende de toegewezen tijd wacht de nginx-server eenvoudigweg niet op een antwoord van apache en informeert hij u hierover. Die. Er zijn duidelijke overbelastingen aan de “interne” kant van de backend. Een andere vraag is wat precies de oorzaak is van deze overbelastingen en waarom Apache geen tijd heeft om op tijd te reageren? Dit is een andere vraag. Het is niet zo eenvoudig om erachter te komen; je moet naar de serverlogboeken kijken. Nou, het is duidelijk dat iemand overbelast is. Ofwel duurt het uitvoeren van het script lang, ofwel heeft het DBMS geen tijd om veel verzoeken te verwerken, wat overigens het vaakst gebeurt, omdat de connector met het DBMS precies het ding is zwak punt. Over het algemeen de jouwe interne server heeft geen tijd om het script op tijd uit te voeren, of beter gezegd, het duurt gewoon lang om uit te voeren, en nginx wil niet wachten en heeft haast om u een 504-fout te geven. Het is ook duidelijk waarom Apache niet op tijd draait: er zijn veel verzoeken van buitenaf en er zijn niet genoeg serverbronnen (dit kun je achterhalen via de websiteverkeersteller), of het script dat wordt uitgevoerd is erg zwaar.

Over het algemeen hebben we het hier nu niet over, maar over hoe om te gaan met de 504-fout. Veel webmasters zijn best tevreden met het feit dat de pagina binnen een paar minuten is gegenereerd, misschien is het de moeite waard.

Over het algemeen is het, dichter bij de zaak, onze taak om de nginx-server te vertellen langer te wachten op het antwoord van apache en niet te haasten om de client een 504-fout te geven. Alles is hiermee eenvoudig. Natuurlijk moet je dat hebben root-toegang naar uw server, oh virtuele hosting oh, ik zal het niet eens zeggen. Over het algemeen gaan we naar onze server, zelfs via het ssh-protocol in de terminal, en gaan naar de map met de nginx-serverconfiguratiebestanden. Ik zeg meteen dat ze van versie tot versie veranderen en daarom kan ik niet precies zeggen welk bestand het zal zijn. Bovendien hangt het nog steeds af van in welke modus nginx draait en wie het voor je heeft geconfigureerd. Grofweg hebben we het huidige nginx-serverinstellingenbestand nodig. Misschien zal het zelfs nginx.conf zijn, zoals het in het algemeen zou moeten zijn.

Ga naar het bestand met voorwaardelijke instellingen virtuele gastheren nginx-server op: /etc/nginx/nginx.conf

Hier kunnen we zoeken naar reeds geïnstalleerde richtlijnen (indien aanwezig) of deze handmatig toevoegen. Je kunt het op natuurlijke wijze toevoegen voor alle hosts en voor elke specifieke host, het maakt niet uit. Over het algemeen schrijven we het volgende:

Proxy_send_time-out 60; # wachttijd bij het verzenden van een verzoek proxy_read_timeout 60; # time-out bij het lezen van het antwoord

Deze richtlijnen zijn nodig om de time-out te wijzigen. Het is beter om de locatie in te voegen. Ik heb het ongeveer zo:

Server ( luister xxx.xxx.xxx.xxx:80; # server ip-adres en luisterpoort servernaam ergensserver.loc; # servernaam herschrijven ^(/manager/.*)$ https://$host$1 permanent; error_page 404 = @fallback; # Hierna volgen twee regels die moeten worden toegevoegd proxy_send_timeout 600; # wachttijd bij het verzenden van een verzoek proxy_read_timeout 600; # wachttijd bij het lezen van een antwoordlocatie / ( proxy_pass http://xxx.xxx.xxx.xxx:8080 ; # protocol en het adres van de proxyserver, evenals een optionele URI waarnaar de locatie moet worden weergegeven proxy_redirect http://sitename.loc:8080/ / # tekst die moet worden gewijzigd in de “Locatie” en “ Refresh” headervelden in het antwoord van de proxy_set_header Host $ host proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for proxy_set_header X-Real-IP $remote_addr;

Sla vervolgens het configuratiebestand op en start de nginx-server opnieuw op. Nu zal het precies zo lang wachten op een antwoord van apache als u hebt opgegeven in de toegevoegde richtlijnen, en niet volgens de standaardwaarde. Ik denk dat het duidelijk is dat je zelf de tijd bepaalt wat je wilt. Dat is alles, nu heeft u geen last meer van de 504 Gateway Time-out-fout. Het is duidelijk dat dit slechts het topje van de ijsberg is en dat je de reden voor het genereren van lange pagina’s zult moeten aanpakken, maar dat is een ander onderwerp. Het kan zijn dat je ook een grotere time-out voor PHP moet instellen, anders kan het gaan vloeken en zeggen dat ze het niet genoeg tijd geven om het te verwerken. Om dit te doen, gebruiken we de PHP-richtlijnen max_input_time en max_execution_time in het bestand PHP-instellingen- php.ini of in een bestand lokale instellingen Apache-server - .htaccess

Er is een bericht ontvangen: fout 504. Dit geeft aan dat het lang duurde voordat de gateway reageerde of voortijdig werd beëindigd.

Oorzaken van 504-fouten.

Laten we eens kijken naar de belangrijkste redenen. Dit kan een gebrek aan RAM op de server zijn, problemen met scripts op uw site, problemen met de configuratie, enz. De elementaire reden voor het verschijnen van fout 504 is overbelasting van de server, waardoor een wachtrij met verzoeken ontstaat . Vanwege het wachten in de wachtrij komt het verzoek niet binnen de toegewezen tijd aan voor verwerking en wordt het weggegooid.

Het veranderen van de site voor de site zal het probleem slechts een tijdje helpen oplossen. Een dringende aanbeveling is om te beginnen met het optimaliseren van (, scripts, SQL-query's). U moet ook nadenken over het vergroten van de serverbronnen en het zoeken naar een andere hosting. Het wordt aanbevolen om contact op te nemen met uw hostingadviesdienst. Maar het is beter om dit te doen na het optimaliseren van de sitescripts.

Als de bron zelf geen fouten bevat, of als de host het probleem niet oplost, zoek dan gerust naar een andere site.

Fout oplossing.

Maar dit zijn meer mondiale taken. Probeer in de tussentijd de wachttijd en uitvoeringstijd voor een aantal scripts te verlengen. Dit helpt de beruchte 504-fout te elimineren. Standaard is de uitvoeringstijd in de serverinstellingen ingesteld op 30s.

Om deze te vergroten, kunt u set_time_limit gebruiken. Het is gewoon niet altijd mogelijk om dit schema te gebruiken vanwege hostingbeperkingen. Als PHP draait in het zogenaamde veilige modus, dan moet je de looptijd van het script verlengen in de php-configuratie (functie max_execution_time). Als je het verbod op het gebruik van set_time_limit niet kunt opheffen, probeer dan te rennen deze functie(max_executie). Ten slotte kunt u de looptijd van het script in de serverconfiguratie verlengen. Om dit te doen, schrijft u het volgende:

  • proxy_send_time-out 60; (wachten op overdrachtsproces);
  • proxy_read_timeout 60; (wacht op leesproces).

We stellen 60 s (120) in in plaats van de standaard 30 s.

Maar het is mogelijk dat de host dergelijke wijzigingen niet doorvoert vanwege het toenemende verbruik van hulpbronnen. Het is mogelijk dat de mogelijkheden van de server beperkt zijn; deze beschikt niet over voldoende bronnen om de taken van het script te voltooien. Om op te lossen deze kwestie en het elimineren van de fout zal moeten worden vergroot RAM en verhoog het aantal httpd (Apache) serverprocessen. Maar dit zijn hostingtaken. Wij hopen dat onze aanbevelingen nuttig voor u zullen zijn bij uw werk.

Fout 504 Gateway Timeout - oorzaken en oplossingen - 4,6 uit 5 op basis van 15 stemmen

Fout 504 - wat het betekent, waarom het voorkomt en hoe u er vanaf kunt komen, deze punten worden in dit artikel gedetailleerd besproken. Ik hoop dat u na het lezen ervan actie kunt ondernemen. bepaalde acties en verwijder deze fout die op uw site optreedt.

Wat betekent fout 504?

Fout 504 Gateway Timeout betekent dat de gatewaytime-out is verstreken. Gebruiker kan zien deze code fouten in het geval dat de server, werkend als proxyserver of gateway, met een verzoek contact opnam met een server hoger in de hiërarchie, maar niet op tijd een reactie ontving.

Servers waarop Apache als backend en nginx als frontend is geïnstalleerd, genereren deze foutcode het vaakst. Het werk van de gebruiker met de server vindt plaats volgens het volgende plan: de client stuurt een verzoek naar de server, dat niet rechtstreeks naar Apache gaat, maar via nginx wordt verzonden (dit is zoiets als een verzoekverdeler). Als deze laatste binnen een bepaalde tijd geen antwoord van Apache kon ontvangen, stuurt hij de client een serverfoutmelding 504 (Gateway Timeout) in plaats van het vereiste resultaat.

Redenen voor de fout

Gebrek aan bronnen op de server vanwege zware belasting.

De Apache-server heeft één niet erg prettige functie: onder zware belasting en gebrek aan bronnen heeft hij geen tijd om te verwerken groot aantal aanvragen en tijdig http-antwoorden hierop geven. Op deze manier worden klantverzoeken in de wachtrij geplaatst en wanneer de tijdslimiet voor het ontvangen van een antwoord afloopt, worden ze zonder meer weggegooid. Als gevolg hiervan ziet de gebruiker een foutcode 504 (Gateway Timeout) op de browserpagina.

Opgemerkt moet worden dat een hoge belasting niet altijd te wijten is aan een groot aantal bezoekers, maar dit is niet ongewoon. U kunt het artikel "" bekijken, waar de oorzaken van de belasting in meer detail worden besproken.

Fouten gemaakt in scripts.

Een andere reden voor het verschijnen van deze fout zijn fouten in uitvoerbare scripts. In de regel wordt de uitvoering van het script toegewezen een bepaald bedrag tijd, maar in sommige gevallen heeft hij niet genoeg tijd. Dit gebeurt vaak wanneer het script toegang krijgt naar een server van een derde partij en slaagt er niet altijd in om binnen de gestelde tijdslimiet een verzoek te verzenden en een antwoord te ontvangen, en genereert als gevolg daarvan een fout.

Je kunt selecteren volgende redenen Vertragingen bij het uitvoeren van scripts:

1. Het script probeert toegang te krijgen tot een externe database, die om verschillende redenen momenteel niet toegankelijk is.

2. Het script probeert gegevens van de server te verkrijgen die momenteel niet beschikbaar zijn (een voorbeeld is de werking van verschillende weerwidgets, wisselkoersen, enz.)

3. Het script probeert een verbinding tot stand te brengen via een proxyserver, die momenteel niet beschikbaar is en het verzoek niet kan verwerken.

Manieren om fout 504 op te lossen

Laten we een paar veelvoorkomende gevallen bekijken en proberen te begrijpen hoe u de 504-fout kunt oplossen.

Als de fout optreedt als gevolg van serverbelasting, moet u eerst de volgende stappen ondernemen:

1. Optimaliseer de server.

2. Optimaliseer scripts.

3. Vergroot de bronnen die beschikbaar zijn voor de server (aantal httpd-processen (Apache), RAM, enz.)

4. Als de bron zich op gedeelde hosting bevindt, kunt u overwegen om te veranderen tariefplan of koop een virtuele dedicated server. Bij eenvoudige shared hosting kunnen alleen de beheerders van de hostingprovider de situatie verbeteren. Omdat dit te wijten kan zijn aan hun acties of aan de acties van het management van de hostingprovider als gevolg van het feit dat er te veel accounts op één server zijn geplaatst. In het geval van hun passiviteit de beste optie zal de hostingprovider volledig veranderen.

Als u virtuele hosting van hoge kwaliteit nodig heeft, kunt u letten op een hostingprovider die deze biedt deze dienst van goede kwaliteit.

Als u vermoedt dat de scripts werken:

Het is noodzakelijk om de functionaliteit te controleren van de bronnen waartoe de scripts toegang hebben. Heel vaak ligt het probleem juist daarin.

Het is de moeite waard om na te gaan hoe lang de scripts worden uitgevoerd en of ze binnen de toegewezen limiet passen. Desnoods dan configuratiebestand php.ini moet de waarde php_max_execution_time verhogen. Deze parameter bepaalt de uitvoeringstijd van het script; meestal is dit 30 seconden; u kunt deze instellen op 60.