L’errore 503 Service Unavailable dice una cosa precisa: il server c’è, funziona, ma in questo momento non è in grado di gestire la richiesta. A differenza di un errore 500, che segnala un guasto imprevisto, il 503 è per definizione una condizione temporanea. Può essere voluta, come durante una manutenzione, oppure il sintomo di un server che non regge il carico.
In questa guida vediamo come riconoscerlo, come capire quale dei due casi hai davanti, come risolverlo e come usarlo correttamente quando sei tu a dover mettere il sito in pausa.
Cosa significa errore 503
Il 503 appartiene alla famiglia degli errori 5xx, quelli generati dal server. Quando lo restituisce, il server comunica che il servizio tornerà disponibile e può indicare quando tramite l’intestazione Retry-After, espressa in secondi o come data. È l’unico codice di errore che, nelle intenzioni di chi ha scritto lo standard, descrive una situazione attesa e passeggera.
Come si presenta
I messaggi più comuni sono 503 Service Unavailable, Service Temporarily Unavailable, HTTP Error 503 e The server is temporarily unable to service your request due to maintenance downtime or capacity problems, tipico dei server Apache. Su WordPress, durante un aggiornamento, compare invece Momentaneamente non disponibile per manutenzione programmata. Controlla tra un minuto. Alcuni hosting mostrano pagine personalizzate che parlano di risorse esaurite o di limiti dell’account raggiunti: il codice sottostante è sempre 503, o in qualche caso 508.
Le cause più comuni
Manutenzione programmata
Durante un aggiornamento, una migrazione o un intervento sul server, il sito viene messo volutamente in pausa. In WordPress, per esempio, un aggiornamento di core, temi o plugin crea un file .maintenance nella cartella principale, che mostra il messaggio di manutenzione fino al termine dell’operazione. Se l’aggiornamento si interrompe, il file resta lì e il sito rimane bloccato indefinitamente.
Sovraccarico del server
Un picco di traffico, una campagna pubblicitaria, una newsletter inviata a migliaia di contatti, un attacco o un bot che scansiona il sito in modo aggressivo possono esaurire le risorse disponibili. Il server, invece di bloccarsi del tutto, rifiuta le richieste in eccesso con un 503.
Limiti dell’hosting raggiunti
Sugli hosting condivisi ogni account ha limiti di CPU, memoria e processi contemporanei, spesso gestiti da sistemi come CloudLinux. Quando vengono superati, le nuove richieste ricevono un 503 o un 508. Un indicatore tipico è il limite dei cosiddetti entry processes, cioè le connessioni elaborate contemporaneamente: se il pannello mostra quel valore costantemente al massimo, il sito ha superato le dimensioni del piano.
Processi PHP esauriti o bloccati
Con PHP-FPM, il server ha un numero massimo di processi PHP disponibili. Se tutti sono occupati da script lenti, per esempio query pesanti o chiamate a servizi esterni che non rispondono, le richieste successive restano in coda e ricevono un 503. Nel log di PHP-FPM compare un avviso come questo:
WARNING: [pool www] server reached pm.max_children setting (10), consider raising it
Servizi a monte non disponibili
Se il sito passa da un CDN o da un bilanciatore di carico, il 503 può arrivare da lì quando il server di origine non risponde o è stato temporaneamente escluso perché ritenuto non funzionante.
Come risolvere se sei un visitatore
Trattandosi di un errore temporaneo lato server, la soluzione per chi visita il sito è aspettare qualche minuto e ricaricare la pagina. Evita di ricaricare di continuo: se il server è sovraccarico, ogni richiesta in più peggiora la situazione. Se il sito è fondamentale per te, puoi verificare sui canali social del gestore se è in corso una manutenzione annunciata.
Come risolvere se il sito è tuo
- Verifica se è in corso una manutenzione. Se usi WordPress e il sito è rimasto bloccato dopo un aggiornamento, cerca il file
.maintenancenella cartella principale ed eliminalo via FTP o file manager. Ricorda che è un file nascosto. Poi ripeti l’aggiornamento che si era interrotto, per evitare di lasciare plugin a metà. Controlla anche se l’hosting ha comunicato interventi programmati. - Controlla l’uso delle risorse. Il pannello dell’hosting mostra di solito grafici di CPU, memoria e processi. Se vedi picchi al limite in corrispondenza degli errori, hai trovato la causa.
- Individua da dove arriva il carico. L’access log rivela se un singolo indirizzo IP o un bot sta inondando il sito di richieste. Su un VPS puoi contare le richieste per indirizzo IP con un comando come
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head. Se trovi un responsabile, puoi bloccarlo dal firewall, limitare la frequenza delle richieste o attivare la protezione di un CDN. La guida ai log del server spiega come leggerli. - Riduci il lavoro del server. Una cache di pagina ben configurata permette di servire la maggior parte delle visite senza eseguire PHP né interrogare il database, e da sola risolve molti 503 da traffico. Disattiva i plugin non necessari, individua quelli che rallentano il sito e controlla che le operazioni programmate di WordPress, come backup e invii di email, non si sovrappongano nelle ore di punta.
- Valuta un piano più adeguato. Se il sito raggiunge sistematicamente i limiti anche dopo l’ottimizzazione, il problema è strutturale: serve un piano con più risorse o un tipo di hosting diverso, come un VPS, dove i limiti si possono configurare.
Come prevenire i 503 da traffico
Se il tuo sito ha già mostrato errori 503 durante un picco, è molto probabile che si ripresentino al prossimo. Prevenirli costa meno che inseguirli, e le misure più efficaci sono poche.
La prima è la cache di pagina. Un sito dinamico che genera ogni pagina da zero a ogni visita consuma processi PHP e query al database per contenuti che sono identici per tutti i visitatori. Con una cache attiva, che sia quella del server, di un plugin o di un CDN, la stessa pagina viene preparata una volta e servita migliaia di volte con un consumo di risorse minimo.
La seconda è un CDN, che distribuisce immagini, fogli di stile e script da server sparsi nel mondo e alleggerisce l’hosting di gran parte delle richieste. Molti CDN offrono anche protezione dagli attacchi e regole per limitare la frequenza delle richieste di uno stesso indirizzo, utili contro bot aggressivi e tentativi di accesso ripetuti.
La terza è la pianificazione. Se sai che una newsletter, una campagna o un evento porteranno molto traffico in poco tempo, verifica in anticipo che la cache sia attiva su tutte le pagine coinvolte, sposta backup e operazioni pesanti in altri orari e, se necessario, chiedi all’hosting un aumento temporaneo delle risorse.
L’ultima è il monitoraggio: un servizio che controlla il sito ogni pochi minuti ti avvisa appena compaiono i primi errori, mentre lo storico dei grafici di risorse ti dice se stai avvicinandoti ai limiti del piano prima che diventino un problema.
Come mettere il sito in manutenzione nel modo corretto
Il 503 è l’unico codice di errore che, usato bene, protegge il posizionamento. Quando un sito è in manutenzione, rispondere con un 503 dice a Google che l’interruzione è temporanea: il motore di ricerca riprova più tardi senza rimuovere le pagine dall’indice. Aggiungere l’intestazione Retry-After rende l’indicazione ancora più chiara.
Su un server Apache puoi farlo con poche righe nel file .htaccess, che rimandano tutti i visitatori a una pagina di manutenzione tranne il tuo indirizzo IP, così puoi continuare a lavorare:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^203\.0\.113\.10$
RewriteCond %{REQUEST_URI} !^/manutenzione\.html$
RewriteRule ^ - [R=503,L]
ErrorDocument 503 /manutenzione.html
Header always set Retry-After "3600"
Sostituisci l’indirizzo IP con il tuo e crea una semplice pagina manutenzione.html. Su WordPress, molti plugin di manutenzione restituiscono già il codice 503: prima di sceglierne uno verifica che lo faccia, controllando il codice di risposta con gli strumenti per sviluppatori del browser.
È invece un errore mostrare una pagina di manutenzione che risponde con il codice 200: Google potrebbe indicizzare il messaggio di manutenzione al posto dei tuoi contenuti. Allo stesso modo, un 503 che dura giorni smette di essere temporaneo agli occhi di Google, che inizia a rimuovere le pagine dai risultati. Le manutenzioni vanno quindi pianificate per durare il meno possibile, preferibilmente nelle ore di traffico più basso.
Domande frequenti
Quanto dura un errore 503?
Dipende dalla causa. Una manutenzione di WordPress dura pochi secondi, un picco di traffico può durare minuti o ore. Se il 503 persiste a lungo senza una manutenzione in corso, va considerato un guasto e affrontato come tale.
Che differenza c’è tra errore 503 e 500?
Il 503 segnala un’indisponibilità temporanea e prevista, mentre il 500 segnala un errore imprevisto nel codice o nella configurazione. Le soluzioni sono diverse: per il 500 trovi una procedura completa nella guida dedicata.
Il 503 può dipendere da un attacco?
Sì. Un attacco di tipo DDoS o un bot aggressivo possono esaurire le risorse del server e causare 503 a catena. In questi casi un CDN con protezione dagli attacchi e regole di limitazione delle richieste sono le difese più efficaci.
Perché il 503 compare solo in alcune ore del giorno?
Di solito perché in quelle ore il traffico è più alto o partono operazioni pesanti programmate, come backup, sincronizzazioni o invii di newsletter. Incrociare l’orario degli errori con i grafici delle risorse e con le attività pianificate rivela quasi sempre la causa.








