Un errore di timeout del gateway 504 è un HTTP response status code
che indica che un server, che attualmente agisce come gateway o proxy, non ha ricevuto una risposta tempestiva da un altro server più a monte. Come con la maggior parte dei codici di risposta HTTP che indicano un errore come questo, può essere difficile determinare la causa esatta di un 504 Gateway Timeout Error
., Esistono dozzine di possibili codici di stato HTTP utilizzati per rappresentare la complessa relazione tra il client, un’applicazione Web, un server Web e spesso più servizi Web di terze parti, quindi determinare la causa di un particolare codice di stato può essere una sfida, anche nelle migliori circostanze.
In questo articolo esamineremo 504 Gateway Timeout Error
esaminando alcuni suggerimenti per la risoluzione dei problemi e potenziali correzioni per problemi comuni che potrebbero causare questo problema, quindi iniziamo!,
Il problema è Server-Side
Tutti i codici di stato della risposta HTTP che si trovano nella categoria5xx
sono consideratiserver error responses
. Simile a 502 Bad Gateway Error
abbiamo guardato in passato, un 504 Gateway Timeout Error
indica che qualcosa è andato storto con un gateway
o proxy
server che è più a monte. In gergo di rete generale, un upstream server
è un server che fornisce un servizio a (cioè è accessibile da) un altro server., Pertanto, un server che è a monte si trova più in alto nella gerarchia generale del server rispetto a un server che è downstream
. Un altro modo di pensare a monte rispetto a valle è la loro relativa vicinanza al dispositivo (cioè il client
) — maggiore è il numero di hop necessari per trasferire i dati dal client al server in questione, l’ulteriore upstream
che si trova server.,
Poiché il 504 Gateway Timeout Error
indica che qualcosa è andato storto all’interno del server
della tua applicazione, possiamo in gran parte ignorare il lato client
delle cose. Se stai cercando di diagnosticare un problema con la tua applicazione, puoi ignorare immediatamente la maggior parte del codice e dei componenti lato client, come HTML, CSS (cascading Style Sheets), JavaScript lato client e così via. Questo non si applica esclusivamente ai siti web, sia., Molte applicazioni smart phone che hanno un’interfaccia utente dall’aspetto moderno sono in realtà alimentati da una normale applicazione web dietro le quinte; uno che è semplicemente nascosto all’utente. Se si utilizza tale applicazione e si verifica un504 Gateway Timeout Error
, il problema non sarà correlato all’app installata sul telefono o sul dispositivo di test locale. Invece, sarà qualcosa sul lato server, che sta eseguendo la maggior parte della logica e dell’elaborazione dietro le quinte, al di fuori della competenza dell’interfaccia locale presentata all’utente.,
Detto questo, non è necessariamente il caso che lo specificoweb server
su cui è in esecuzione l’applicazione sia la fonte del problema. Invece, è del tutto possibile che ogni aspetto della tua particolare applicazione (insieme ai suoi server) funzioni in modo impeccabile, ma un 504 Gateway Timeout Error
potrebbe ancora verificarsi se un server upstream sta riscontrando problemi.
Inizia con un backup completo dell’applicazione
Come con qualsiasi cosa, è meglio averlo giocato sul sicuro all’inizio piuttosto che rovinare qualcosa e venire a pentirsene più tardi lungo la strada., Pertanto, è fondamentale eseguire un backup completo dell’applicazione, del database e così via, prima di tentare qualsiasi correzione o modifica al sistema. Ancora meglio, se ne hai la possibilità, crea una copia completa dell’applicazione su un server secondario staging
che non è “live” o non è altrimenti attivo e disponibile al pubblico. Questo ti darà un terreno di prova pulito con cui testare tutte le potenziali correzioni per risolvere il problema, senza minacciare la sicurezza o la santità della tua applicazione live.,
Diagnosticare un errore di timeout del gateway 504
Come accennato, un504 Gateway Timeout Error
significa che un server che èupstream
a uno a cui si sta connettendo (ilclient
) non ha ricevuto una risposta “tempestiva” da un altro server più avanti a monte. In questo scenario, questo indica che il server che fornisce 504 Gateway Timeout Error
agisce come gateway
, quindi prendiamoci un momento per discutere di cosa sia un gateway (o proxy)., Nella maggior parte delle comunicazioni HTTP, unclient
si connetterà a unserver
tramite un computer di terze partigateway
. Il gateway agisce come, beh, un gateway, con il quale i messaggi dal client
possono essere inviati in modo sicuro al server
, e viceversa. Ungateway
agisce come unnode
all’interno della rete web più grande, collegando e instradando le comunicazioni tra piùclient
,server
e altri tipi di nodi all’interno delle vicinanze (virtuali).,
Che ci crediate o no, la maggior parte delle case con accesso a Internet hanno anche un gateway attivo. La rete domestica locale, che è probabilmente configurata tramite un router (o router+modem ibrido), in genere assegna indirizzi IP a tutti i dispositivi della rete utilizzando l’indirizzo di base di 192.168.1.*
, dove l’asterisco cambia a seconda del dispositivo., Nella maggior parte dei casi, la comunicazione da uno di questi indirizzi di rete locale a un altro indirizzo di rete locale è consentita, ma quando il computer tenta di connettersi a un indirizzo IP al di fuori di questo intervallo di base, gateway
del router lo intercetterà ed eseguirà la comunicazione tra il computer e il server remoto
In alcune situazioni, il server Web che esegue l’applicazione potrebbe essere la causa del problema., Ciò è particolarmente vero quando il server esegue una combinazione di configurazione del server frontend+backend (come Nginx e Apache) o il server Web si basa su servizi di terze parti, che in genere si trovano altrove su server upstream aggiuntivi. Qualsiasi server upstream a cui il client (browser Web) si sta connettendo potrebbe essere inattivo o riscontrare problemi in questo momento, il che potrebbe causare un ritardo nell’elaborazione e portare a 504 Gateway Timeout Error
che stai vedendo.
Soprattutto, Google è tuo amico., Non aver paura di cercare termini specifici relativi al tuo problema, come il nome del software CMS o del server Web dell’applicazione, insieme a 504 Gateway Timeout Error
. È probabile che troverai altri che hanno riscontrato questo problema e che sono stati potenzialmente forniti una soluzione.,
Risoluzione dei problemi sul Server-Side
Ecco alcuni consigli per aiutarvi a risolvere quello che potrebbe essere la causa del 504 Gateway Timeout Error
per apparire sul lato server di cose:
-
Recent DNS Changes
– Il Domain Name System (DNS
) è un sistema decentralizzato sistema di denominazione per i dispositivi connessi tramite una rete (anche una massiccia rete, ad esempio Internet). In breve,DNS
associa i nomi di dominio (ad es.,airbrake.io
) a specifici indirizzi IP e memorizza tale associazione in una serie di server dei nomi autorevoli sparsi in tutto il mondo. Pertanto, quando chiedi al tuo computer di connettersi aairbrake.io
, il tuo computer controlla effettivamente con un server dei nomiDNS
nelle vicinanze per scoprire a quale indirizzo IP specifico (risorsa Internet) dovrebbe connettersi. Dal tuo punto di vista sta andando direttamente aairbrake.io
, ma dietro le quinte il traffico viene indirizzato a un indirizzo IP (52.203.232.56
, in questo caso)., Di conseguenza, la tua applicazione potrebbe presentare un504 Gateway Timeout Error
se il tuo sito ha apportato modifiche recenti al suo server DNS, che è il risultato della modifica dei server host o dello spostamento del sito su un indirizzo IP diverso. Tali modifiche DNS, note comeDNS propagation
, non sono istantanee e a volte possono richiedere alcune ore per propagarsi in tutti i server dei nomi autorevoli., -
Server Connectivity Issues
– Anche se può sembrare semplice, è del tutto possibile che un504 Gateway Timeout Error
indichi semplicemente che un server da qualche parte nella catena è inattivo o irraggiungibile per qualsiasi motivo. La maggior parte delle applicazioni moderne non risiedono su un singolo server, ma possono, invece, essere distribuite su più sistemi, o anche fare affidamento su molti servizi di terze parti per funzionare. Se uno qualsiasi di questi server è inattivo per manutenzione o altrimenti inaccessibile, ciò potrebbe causare un errore che sembra provenire dalla propria applicazione., -
Improper Firewall Configuration
– Un firewall è un dispositivo di sicurezza di base che monitora il traffico di rete e funge da gatekeeper, decidendo quale traffico è sicuro e quale potrebbe essere dannoso. Nella maggior parte dei casi, tutto il traffico potenzialmente dannoso viene arrestato (e può essere registrato per l’uso dell’amministratore di rete). In alcune situazioni, è del tutto possibile che un firewall configurato da qualche parte nella rete in cui è in esecuzione l’applicazione impedisca l’attraversamento di una qualche forma di traffico critico., Ciò è particolarmente vero per le applicazioni che si basano su reti di distribuzione di contenuti (CDNs
), che fungono da host di terze parti per contenuti” pesanti ” come immagini o video, che ospitano tali contenuti per conto dell’applicazione, in modo che l’applicazione possa mantenere la sua velocità ed efficienza. Tuttavia, i servizi firewall automatici possono talvolta eseguire falsi positivi, scambiando contenuti perfettamente sicuri e validi da CDN o altrove come dannosi, chiudendo così quel flusso di contenuti in un istante, il che potrebbe portare a un504 Gateway Timeout Error
., -
Check the Logs
– Quasi tutte le applicazioni web manterranno una qualche forma di log lato server.Application logs
sono in genere la cronologia di ciò che l’applicazione ha fatto, ad esempio quali pagine sono state richieste, a quali server si è connessa, quali risultati del database fornisce e così via.Server logs
sono correlati all’hardware effettivo che esegue l’applicazione e spesso forniscono dettagli sullo stato e lo stato di tutti i servizi connessi, o anche solo il server stesso., Google “logs” se si sta utilizzando un CMS, o “logs” e ” logs ” se si sta eseguendo un’applicazione personalizzata, per ottenere ulteriori informazioni sulla ricerca dei log in questione. -
Application Code or Script Bugs
– Se tutto il resto fallisce, potrebbe essere che un problema in qualche codice personalizzato all’interno dell’applicazione stia causando il problema. Prova a diagnosticare da dove potrebbe provenire il problema tramite il debug manuale dell’applicazione, insieme all’analisi dei registri dell’applicazione e del server., Idealmente, eseguire una copia dell’intera applicazione su una macchina di sviluppo locale ed eseguire un processo di debug passo-passo, che consentirà di ricreare lo scenario esatto in cui si è verificato504 Gateway Timeout Error
e visualizzare il codice dell’applicazione nel momento in cui qualcosa va storto.
Non importa quale sia la causa, l’aspetto di un504 Gateway Timeout Error
proveniente dalla propria applicazione Web è una forte indicazione che potrebbe essere necessario uno strumento di gestione degli errori per aiutarti a rilevare automaticamente questi e altri errori in futuro., Tali meccanismi possono anche avvisare te e il tuo team immediatamente quando si verifica un errore. Il software di monitoraggio degli errori di Airbrake fornisce il monitoraggio degli errori in tempo reale e la segnalazione automatica delle eccezioni per tutti i progetti di sviluppo. La dashboard Web all’avanguardia di Airbrake ti assicura di ricevere aggiornamenti di stato 24 ore su 24 sullo stato dell’applicazione e sui tassi di errore. Indipendentemente da ciò su cui stai lavorando, Airbrake si integra facilmente con tutti i linguaggi e i framework più diffusi., Inoltre, Airbrake semplifica la personalizzazione dei parametri di eccezione, mentre ti dà il controllo completo del sistema di filtraggio degli errori attivo, in modo da raccogliere solo gli errori che contano di più.
Dai un’occhiata al software di monitoraggio degli errori di Airbrake oggi e scopri di persona perché così tanti dei migliori team di ingegneri del mondo usano Airbrake per rivoluzionare le loro pratiche di gestione delle eccezioni!