- 1 1. Introduzione
- 2 2. Significato dell’errore e quando si verifica
- 3 3. Cause principali e spiegazioni dettagliate
- 4 4. Soluzioni in WordPress
- 5 5. Misure preventive
- 5.1 Prevenire la ricorrenza e garantire un funzionamento stabile
- 5.2 Manutenzione regolare e backup
- 5.3 Ottimizzazione delle query e riduzione del carico
- 5.4 Monitoraggio e regolazione delle impostazioni del server
- 5.5 Utilizzo delle funzionalità di caching
- 5.6 Revisione regolare dei log di errore
- 5.7 Riepilogo
- 6 6. Sezione FAQ
- 6.1 Domande frequenti e soluzioni
- 6.2 Q1: L’errore persiste anche dopo aver modificato le impostazioni del server. Cosa devo fare?
- 6.3 Q2: Un plugin di WordPress potrebbe causare l’errore?
- 6.4 Q3: Come dovrei testare dopo aver modificato le impostazioni?
- 6.5 Q4: Ricevo l’errore durante l’importazione di grandi quantità di dati. Come posso risolverlo?
- 6.6 Q5: Il server MySQL si blocca frequentemente. Cosa devo fare?
- 7 7. Conclusione
- 7.1 Riepilogo dell’articolo
- 7.2 Passaggi per risolvere l’errore
- 7.2.1 1. Comprendere il significato e la comparsa dell’errore
- 7.2.2 2. Affrontare le cause principali tramite modifiche di configurazione
- 7.2.3 3. Implementare le soluzioni nell’ambiente WordPress
- 7.2.4 4. Adottare misure preventive
- 7.2.5 5. Utilizzare la sezione FAQ per supporto alla risoluzione dei problemi
- 7.3 Punti chiave e precauzioni
- 7.4 Consiglio finale
- 7.5 Risorse aggiuntive
1. Introduzione
Panoramica e importanza dell’errore
L’errore “MySQL server has gone away” indica che la connessione al server MySQL è stata terminata per qualche motivo. Questo messaggio d’errore segnala che, quando un client (come un’applicazione o un sito web) ha tentato di accedere al database, non ha ricevuto alcuna risposta dal server.
Scopo di questo articolo
Questo articolo fornisce una spiegazione dettagliata delle cause e delle soluzioni per l’errore “MySQL server has gone away”. Inoltre, tratteremo le misure preventive per aiutarti a evitare errori simili in futuro.
In particolare, spiegheremo i seguenti argomenti passo dopo passo:
- Il significato dell’errore e quando si verifica
- Le cause principali e le spiegazioni dettagliate
- Soluzioni specifiche per WordPress
- Misure preventive per evitare l’errore
- Domande frequenti (FAQ) e soluzioni
Esempi di scenari reali
Ad esempio, se questo errore si verifica durante la pubblicazione di un nuovo post in WordPress, il post potrebbe non essere salvato. Può anche verificarsi quando si tenta di importare una grande quantità di dati in un’unica operazione, causando la terminazione della connessione. Queste situazioni possono essere particolarmente difficili per amministratori di siti web e sviluppatori.
Messaggio ai lettori
Questa guida è scritta per essere facilmente comprensibile da utenti principianti e di livello intermedio. Includiamo esempi concreti e procedure in modo che tu possa rispondere rapidamente quando l’errore si presenta. Ti invitiamo a leggere fino alla fine per acquisire le conoscenze e le competenze necessarie a una risoluzione efficace dei problemi.
2. Significato dell’errore e quando si verifica
Cosa significa “MySQL server has gone away”?
L’errore “MySQL server has gone away” si verifica quando la connessione al server MySQL è stata persa. Questo messaggio indica che, quando il client (applicazione o sito web) ha provato ad accedere al database, non ha ricevuto alcuna risposta dal server.
Esempio di messaggio di errore
ERROR 2006 (HY000): MySQL server has gone away
Questo messaggio di errore viene visualizzato quando il client MySQL non riesce più a connettersi al server.
Principali situazioni in cui si verifica
- Timeout della connessione
- Se l’impostazione di timeout del database è configurata con una durata breve, la connessione verrà terminata dopo un periodo di inattività.
- Questo problema si verifica comunemente con script a lunga esecuzione o attività di elaborazione batch.
- Invio di una query troppo grande
- Se viene inviata al database una query molto grande, il server potrebbe non riuscire a elaborarla e restituire un errore.
- Ad esempio, l’importazione di una grande quantità di dati in un’unica operazione.
- Gestione impropria delle connessioni
- Se l’applicazione non gestisce correttamente le connessioni al database, la connessione può andare persa.
- Se un programma mantiene le connessioni aperte inutilmente o non riesce a riconnettersi, gli errori di connessione sono più probabili.
- Crash o riavvio del server
- Questo errore può verificarsi anche se il server MySQL va in crash o viene riavviato per manutenzione o aggiornamenti.
- Prestare particolare attenzione se il server è instabile a causa di risorse insufficienti o di una configurazione errata.
Esempi specifici
- Errore durante la modifica di un sito web
- In WordPress, lasciare l’editor aperto per molto tempo e tentare di salvare nuovamente può provocare un timeout e generare l’errore.
- Errore durante la migrazione del database
- Durante una migrazione di database su larga scala, la dimensione della query può superare il limite
max_allowed_packet, causando il fallimento del processo.
- Errore durante l’elaborazione batch
- Durante l’esecuzione di processi batch per l’analisi dei dati o la generazione di report, tempi di esecuzione lunghi possono far terminare la connessione, risultando in un errore.

3. Cause principali e spiegazioni dettagliate
Impostazioni di timeout
Panoramica degli errori correlati al timeout
In MySQL, esistono impostazioni di timeout che disconnettono automaticamente una connessione se non viene utilizzata per un certo periodo di tempo. Queste impostazioni sono progettate per gestire le risorse del server in modo efficiente, ma possono causare errori durante processi a lunga durata o operazioni interattive.
Causa
Per impostazione predefinita, i valori wait_timeout e interactive_timeout di MySQL sono 8 ore (28.800 secondi). Tuttavia, negli ambienti di hosting o sui server condivisi, questi valori possono essere impostati molto più bassi. Di conseguenza, se una query richiede molto tempo o se è necessario mantenere aperta una connessione, la connessione può essere terminata.
Soluzione
- Verifica le impostazioni attuali
SHOW VARIABLES LIKE 'wait_timeout'; SHOW VARIABLES LIKE 'interactive_timeout';
- Modifica le impostazioni Aggiungi o modifica le seguenti impostazioni nel tuo file
my.cnfomy.ini.[mysqld] wait_timeout=28800 interactive_timeout=28800
- Riavvia il server
sudo systemctl restart mysql
- Testa dopo aver modificato le impostazioni
SHOW VARIABLES LIKE 'wait_timeout';
Controlla il registro errori
tail -f /var/log/mysql/error.log
Query troppo grande
Panoramica degli errori causati da query di grandi dimensioni
MySQL ha un limite sulla dimensione del pacchetto (quantità di dati) che può elaborare in un singolo momento. Se si tenta di inviare una query che supera questo limite, si verifica un errore. Questo è particolarmente comune durante l’importazione di grandi quantità di dati o l’esecuzione di query di aggiornamento su larga scala.
Causa
La dimensione predefinita di max_allowed_packet è spesso impostata a 16 MB. Le query più grandi di questo valore non verranno elaborate.
Soluzione
- Verifica l’impostazione attuale
SHOW VARIABLES LIKE 'max_allowed_packet';
- Modifica l’impostazione Aggiungi o modifica la seguente impostazione nel tuo file
my.cnfomy.ini.[mysqld] max_allowed_packet=64M
- Riavvia il server
sudo systemctl restart mysql
- Testa dopo aver modificato le impostazioni
SHOW VARIABLES LIKE 'max_allowed_packet';
Esempio concreto di ottimizzazione della query
Nell’esempio seguente, EXPLAIN viene utilizzato per analizzare come viene eseguita la query.
EXPLAIN SELECT * FROM users WHERE status = 'active';
Soluzione alternativa dividendo le query
Durante l’importazione o l’aggiornamento di grandi set di dati, è possibile evitare errori dividendo le query in blocchi più piccoli.
4. Soluzioni in WordPress
Esempio dell’errore che si verifica in un ambiente WordPress
WordPress è un CMS (Content Management System) che utilizza frequentemente il database. L’errore “MySQL server has gone away” può verificarsi durante il salvataggio o l’aggiornamento di post, o durante l’importazione di grandi set di dati. Qui spieghiamo modi specifici per risolvere questo errore in un ambiente WordPress.
Modifica le impostazioni in wp-config.php
Aumenta il limite di memoria
L’errore può verificarsi a causa di una memoria insufficiente di WordPress. In tal caso, è possibile risolverlo aumentando il limite di memoria.
Passaggi
- Apri il file
wp-config.phpsituato nella directory principale di WordPress. - Aggiungi o modifica il seguente codice.
define('WP_MEMORY_LIMIT', '256M'); define('WP_MAX_MEMORY_LIMIT', '512M');
Spiegazione delle impostazioni
WP_MEMORY_LIMIT: Specifica la quantità di memoria disponibile per le operazioni normali.WP_MAX_MEMORY_LIMIT: Specifica la quantità massima di memoria disponibile per i processi in background e altri carichi di lavoro intensi.
Come verificare l’impostazione
Puoi controllare l’utilizzo della memoria dal pannello di amministrazione sotto “Strumenti” → “Salute del sito”.
Ottimizzazione con i plugin
Ottimizzazione del database con WP-Optimize
WP-Optimize è un plugin che rimuove dati non necessari dal database e migliora le prestazioni.
Passaggi di installazione
- Dal pannello di amministrazione di WordPress, fai clic su “Plugin” → “Aggiungi nuovo”.
- Cerca “WP-Optimize”, installalo e attivalo.
Passaggi per eseguire l’ottimizzazione
- Dal menu dei plugin, seleziona “Database”.
- Seleziona “Esegui tutte le ottimizzazioni selezionate” e fai clic sul pulsante “Esegui tutte le ottimizzazioni selezionate”.
Vantaggi
- Dimensione del database ridotta.
- Velocità migliorata rimuovendo dati non necessari e revisioni dei post.
Analisi delle query con Query Monitor
Query Monitor è un plugin che può analizzare le prestazioni delle query del database e gli errori.
Passaggi di installazione
- Seleziona “Aggiungi nuovo” dal menu Plugin.
- Cerca “Query Monitor”, installalo e attivalo.
Come controllare le query
- Fai clic su “Query Monitor” nella barra di amministrazione.
- Esamina l’elenco delle query eseguite, il loro tempo di esecuzione e eventuali messaggi di errore.
Esempio
Esempio di una query problematica:
SELECT * FROM wp_posts WHERE post_status = 'publish';
Se questa query consuma un tempo di esecuzione eccessivo, considera l’aggiunta di indici o l’ottimizzazione della clausola WHERE.
Prevenire disconnessioni regolando le impostazioni SQL
Modifica dell’impostazione max_allowed_packet
Se l’errore si verifica a causa dell’invio di grandi quantità di dati, è necessario aumentare l’impostazione max_allowed_packet.
Passaggi
- Modifica il file
my.cnfomy.inidel server. - Aggiungi o modifica il codice seguente.
[mysqld] max_allowed_packet=64M
Riavvia il server
sudo systemctl restart mysql
Verifica l’impostazione
Usa il comando seguente per confermare il valore.
SHOW VARIABLES LIKE 'max_allowed_packet';
Passaggi di test e verifica dell’errore
Test di verifica della connessione
Testa la connessione al database e conferma che le modifiche di configurazione siano state applicate.
mysql -u root -p
SHOW VARIABLES LIKE 'wait_timeout';
SHOW VARIABLES LIKE 'max_allowed_packet';
Esempio: Controllare le query tramite un plugin
Esegui la query seguente e conferma se l’errore si verifica.
SELECT * FROM wp_options WHERE option_name = 'siteurl';

5. Misure preventive
Prevenire la ricorrenza e garantire un funzionamento stabile
L’errore “MySQL server has gone away” può ripresentarsi anche dopo essere stato risolto una volta. Pertanto, è importante eseguire manutenzione e ottimizzazione regolari per mantenere un funzionamento stabile del sistema. In questa sezione, presentiamo misure preventive concrete per evitare l’errore prima che si verifichi.
Manutenzione regolare e backup
Manutenzione del database
Con l’uso continuato di un database, la frammentazione aumenta e le prestazioni possono diminuire. Eseguire manutenzione regolare aiuta a mantenere condizioni ottimali.
Procedura:
- Rimuovi dati non necessari
DELETE FROM wp_posts WHERE post_status = 'auto-draft';
- Ottimizza il database
OPTIMIZE TABLE wp_posts; OPTIMIZE TABLE wp_options;
- Ricostruisci gli indici
ALTER TABLE wp_posts ENGINE=InnoDB;
Importanza dei backup
Automatizza i backup regolari per prevenire la perdita di dati in caso di errori.
Plugin di esempio:
- UpdraftPlus: Backup automatici e supporto per l’archiviazione cloud.
- All-in-One WP Migration: Backup completo di database e file.
Ottimizzazione delle query e riduzione del carico
Ridurre le query non necessarie
Le query complesse e di lunga durata aumentano il carico del server. Ottimizza le query usando i seguenti metodi.
Passaggi di ottimizzazione:
- Analizza le query
EXPLAIN SELECT * FROM wp_posts WHERE post_status = 'publish';
- Aggiungi indici
ALTER TABLE wp_posts ADD INDEX idx_post_status (post_status);
- Elabora grandi set di dati in batch più piccoli
INSERT INTO large_table VALUES (1, 'data') LIMIT 1000;
Plugin di esempio:
- WP-Optimize: Rimuove automaticamente revisioni e dati non necessari.
- Query Monitor: Identifica e analizza le query lente.
Monitoraggio e regolazione delle impostazioni del server
Migliorare la gestione delle connessioni
Monitora le impostazioni del server e regolale secondo necessità.
Strumenti di monitoraggio:
- phpMyAdmin: Controlla facilmente le query e lo stato della configurazione.
- MySQL Workbench: Analizza lo stato del server e le prestazioni delle query.
Monitoraggio regolare delle prestazioni:
SHOW STATUS LIKE 'Connections';
SHOW STATUS LIKE 'Threads_running';
SHOW STATUS LIKE 'Slow_queries';
Esempi di regolazioni della configurazione del server:
[mysqld]
wait_timeout=28800
interactive_timeout=28800
max_allowed_packet=64M
Utilizzo delle funzionalità di caching
Ridurre il carico introducendo il caching
L’uso del caching riduce il numero di accessi al database e abbassa il carico del server.
Plugin di esempio:
- WP Super Cache : Migliora la velocità tramite il caching di HTML statico.
- W3 Total Cache : Include la funzionalità di caching delle query del database.
Configurazione di esempio:
- Abilita il caching delle pagine.
- Abilita il caching delle query del database.
- Usa il caching degli oggetti per memorizzare i dati dinamici.
Revisione regolare dei log di errore
Rileva i primi segnali di problemi tramite il monitoraggio dei log
Controlla regolarmente i log del server e gli errori per rilevare segnali di avvertimento precoce di potenziali problemi.
Procedura:
tail -f /var/log/mysql/error.log
Quando vengono rilevate anomalie:
- Rivedi le recenti modifiche alla configurazione.
- Se le risorse sono insufficienti, considera l’aggiornamento delle risorse del server.
Riepilogo
Implementando queste misure preventive, puoi prevenire proattivamente l’errore “MySQL server has gone away” e mantenere un’operazione stabile del server. In particolare, la manutenzione regolare e l’uso di strumenti di monitoraggio sono altamente efficaci per la rilevazione precoce e una risposta rapida ai problemi.
6. Sezione FAQ
Domande frequenti e soluzioni
Questa sezione presenta le domande comuni relative all’errore “MySQL server has gone away” e le loro soluzioni pratiche. Completa le sezioni precedenti e fornisce informazioni utili per la risoluzione dei problemi.
Q1: L’errore persiste anche dopo aver modificato le impostazioni del server. Cosa devo fare?
Possibili cause:
- Le modifiche alla configurazione non sono state applicate.
- Il server non è stato riavviato.
- C’è un errore di battitura o un errore nel file di configurazione.
Soluzioni:
- Ricontrolla il file di configurazione:
sudo nano /etc/mysql/my.cnf
oppure
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Verifica i valori di configurazione.
- Conferma che le impostazioni siano state applicate:
SHOW VARIABLES LIKE 'wait_timeout'; SHOW VARIABLES LIKE 'max_allowed_packet';
Verifica che i valori riflettano le tue modifiche.
- Riavvia il server:
sudo systemctl restart mysql
Dopo il riavvio, verifica se l’errore è stato risolto.
Q2: Un plugin di WordPress potrebbe causare l’errore?
Possibili cause:
- Generazione eccessiva di query o utilizzo di memoria da parte di un plugin.
- Uso di plugin incompatibili.
Soluzioni:
- Disattiva i plugin: Apri “Plugin” → “Plugin installati” dalla dashboard di WordPress e disattiva tutti i plugin.
- Riattiva i plugin uno alla volta: Attiva ogni plugin singolarmente e verifica quando l’errore ricompare.
- Usa plugin di ottimizzazione: Rimuovi dati non necessari e ottimizza il database per ridurre il carico.
- WP-Optimize : Per la pulizia del database.
- Query Monitor : Per identificare query lente o problematiche.
Q3: Come dovrei testare dopo aver modificato le impostazioni?
Possibili cause:
- Le modifiche alla configurazione non sono state applicate correttamente.
- I problemi di esecuzione delle query non sono stati rilevati correttamente.
Soluzioni:
- Test di verifica della connessione:
mysql -u root -p SHOW VARIABLES LIKE 'wait_timeout'; SHOW VARIABLES LIKE 'max_allowed_packet';
Conferma che i valori corrispondano alle aspettative.
- Test di esecuzione della query: Esegui una query semplice e verifica che venga eseguita con successo.
SELECT * FROM wp_options WHERE option_name = 'siteurl';
- Monitoraggio dei log: Monitora i log in tempo reale quando si verificano errori.
tail -f /var/log/mysql/error.log
Q4: Ricevo l’errore durante l’importazione di grandi quantità di dati. Come posso risolverlo?
Possibili cause:
- La dimensione della query supera il limite
max_allowed_packet. - Il processo di importazione scade per timeout.
Soluzioni:
- Aumentare la dimensione del pacchetto: aggiungere o modificare quanto segue nel file di configurazione.
[mysqld] max_allowed_packet=64M
Riavviare il server per applicare le modifiche.
- Dividere l’importazione: invece di elaborare grandi quantità di dati in un’unica volta, suddividerli in parti più piccole.
- Monitorare i log e verificare gli errori:
tail -f /var/log/mysql/error.log
Q5: Il server MySQL si blocca frequentemente. Cosa devo fare?
Possibili cause:
- Risorse insufficienti (CPU, memoria).
- Valori di configurazione non ottimizzati.
- Carico aumentato da plugin o query.
Soluzioni:
- Verificare le risorse del server:
free -m top
Se le risorse sono insufficienti, considerare l’aggiornamento o l’ottimizzazione del server.
- Ottimizzare la configurazione:
[mysqld] innodb_buffer_pool_size=1G thread_cache_size=8
Regolare le impostazioni di memoria e gestione dei thread.
- Introdurre strumenti di monitoraggio:
- Utilizzare phpMyAdmin o MySQL Workbench per visualizzare il carico del server.
- Implementare strumenti di monitoraggio in tempo reale con configurazioni di avviso.
7. Conclusione
Riepilogo dell’articolo
Questo articolo fornisce una spiegazione dettagliata delle cause e delle soluzioni per l’errore “MySQL server has gone away”, includendo procedure concrete ed esempi di configurazione. Questo errore può verificarsi per vari motivi, come connessioni al server perse o limiti di dimensione delle query. Comprendendo correttamente e implementando le soluzioni, è possibile sia risolvere sia prevenire il problema.
Passaggi per risolvere l’errore
1. Comprendere il significato e la comparsa dell’errore
- Confermare che si verifica quando la connessione al server MySQL è persa.
- Identificare timeout e query troppo grandi come cause principali.
2. Affrontare le cause principali tramite modifiche di configurazione
- Regolare impostazioni come
wait_timeoutemax_allowed_packetper ottimizzare l’ambiente del server. - Riavviare il server dopo aver apportato le modifiche e testare per confermare che siano state applicate.
3. Implementare le soluzioni nell’ambiente WordPress
- Ottimizzare le impostazioni di memoria in
wp-config.php. - Utilizzare plugin (WP-Optimize e Query Monitor) per ottimizzare il database e monitorare le query.
4. Adottare misure preventive
- Automatizzare la manutenzione e i backup regolari.
- Ridurre il carico ottimizzando le query e implementando la cache.
- Utilizzare strumenti di monitoraggio dei log per rilevare e rispondere tempestivamente ai problemi.
5. Utilizzare la sezione FAQ per supporto alla risoluzione dei problemi
- Fornisce esempi reali di problemi e soluzioni concrete per errori di configurazione e carenze di risorse.
Punti chiave e precauzioni
- Testare sempre dopo aver modificato le impostazioni
- Se le impostazioni non sono applicate correttamente, l’errore potrebbe ripresentarsi. Seguire attentamente i passaggi di test.
- Continuare a monitorare il database
- Controllare regolarmente la velocità di esecuzione delle query e il carico del server per individuare anomalie.
- Prioritizzare la manutenzione preventiva
- Eseguire backup regolari e ottimizzare la cache per ridurre il carico del sistema.
- Verificare la compatibilità di plugin e temi
- Dopo gli aggiornamenti di WordPress, verificare la compatibilità con plugin e temi.
Consiglio finale
L’errore “MySQL server has gone away” può essere risolto efficacemente tramite una corretta configurazione del server, l’ottimizzazione delle query e miglioramenti dell’ambiente WordPress. Tuttavia, identificare la causa principale e implementare misure preventive è il passo più importante.
Utilizza questa guida per mantenere un ambiente di database stabile e sviluppare le competenze necessarie a rispondere rapidamente quando si verificano errori.
Risorse aggiuntive
- Documentazione ufficiale MySQL: https://dev.mysql.com/doc/
- Codex di WordPress: https://codex.wordpress.org


