Salta al contenuto

Come posso risolvere l'errore "Got an error reading communication packets" in Amazon RDS per MySQL o Aurora compatibile con MySQL?

5 minuti di lettura
0

Utilizzo un'istanza database Amazon Relational Database Service (Amazon RDS) per MySQL o Amazon Aurora compatibile con MySQL. Ho ricevuto l'errore "Got an error reading communication packets".

Breve descrizione

Ricevi il messaggio di errore "[Warning] Aborted connection abc to db: 'database name' user: 'user name' host: 'host IP' (Got an error reading communication packets)".

Ricevi il messaggio di errore precedente quando il valore del parametro aborted_clients o aborted_connects aumenta. Amazon RDS annulla la connessione e incrementa il contatore di stato del parametro aborted_clients quando il client viene a mancare e non chiude la connessione o la connessione si interrompe. Il valore del parametro aborted_connects aumenta quando il client non riesce a connettersi al server MySQL.

Ricevi il messaggio di errore anche se il valore del parametro log_error_verbosity è superiore a due. Il parametro log_error_verbosity specifica la verbosità per gestire gli eventi relativi al log degli errori. Per ulteriori informazioni, consulta Communication Errors and Aborted Connections (Errori di comunicazione e connessioni interrotte) sul sito web MySQL.

I fattori che possono causare il messaggio di errore "Got an error reading communication packets" sono i seguenti:

  • Incompatibilità del client o del driver.
  • Firewall o proxy che chiudono le connessioni inattive o bloccano una connessione.
  • Connessione client-server chiusa in modo non corretto che comporta un numero maggiore di connessioni inattive all'interno di Amazon RDS per MySQL.
  • Applicazione client che termina in modo non corretto una connessione.
    Nota: MySQL chiude forzatamente le connessioni inattive da lungo tempo.
  • Connessioni inattive che superano le soglie wait_timeout o interactive_timeout.
  • Una connessione client che supera la soglia di connect_timeout secondi quando riceve un pacchetto di connessione.
  • Valori insufficienti per parametri, ad esempio, net_write_timeout e net_read_timeout.
  • Il valore del parametro max_allowed_packet è stato superato.
    Nota: il problema si verifica quando il valore è troppo basso o le query richiedono più memoria di quella allocata ad Amazon RDS per MySQL.

Risoluzione

Modifica i parametri di timeout

Per identificare la causa del problema, rivedi i parametri relativi ai timeout di connettività. Se utilizzi valori predefiniti per il gruppo di parametri, modifica il valore del timeout di connettività predefinito per l'istanza database.

Per modificare il parametro relativa connettività, completa i seguenti passaggi:

  1. Apri la console Amazon RDS.
  2. Nel pannello di navigazione, scegli Gruppi di parametri.
  3. Scegli il gruppo di parametri per l'istanza database.
  4. Scegli Modifica.
  5. Cerca il parametro relativo al timeout di connettività, quindi modificane il valore.
    Nota: dopo aver modificato i valori, monitora i log degli errori di MySQL mentre verifichi il nuovo valore.

connect_timeout

Imposta un valore più alto per connect_timeout in modo da verificare se il valore riduce la frequenza del problema. Il parametro connect_timeout definisce il numero di secondi che l'istanza database del server MySQL deve attendere prima di rispondere con un handshake errato. Per ulteriori informazioni, consulta connect\ _timeout sul sito web MySQL.

interactive_timeout e wait_timeout

Puoi anche modificare interactive_timeout e wait_timeout. Per ulteriori informazioni su questi parametri, consulta wait_timeout o interactive_timeout sul sito web MySQL. Le applicazioni che utilizzano un pool di connessioni come Java devono avere timeout che corrispondono alle impostazioni del pool di connessioni.

max_allowed_packet

Se l'istanza deve gestire query di grandi dimensioni, colonne BLOB (Binary Large Object) di grandi dimensioni o stringhe lunghe, aumenta il valore del parametro max_allowed_packet. Se una riga contiene più dati rispetto al valore max_allowed_packet, ricevi un errore. Per ulteriori informazioni, consulta max_allowed_packet sul sito web MySQL.

net_write_timeout e net_read_timeout

Aumenta i valori net_write_timeout e net_read_timeout. Puoi impostare net_write_timeout e net_read_timeout sullo stesso valore di wait_timeout. Per ulteriori informazioni, consulta net_write_timeout e net_read_timeout sul sito web MySQL.

Chiama la funzione mysql_close() dall'applicazione client per assicurarti che le connessioni compatibili con Amazon RDS per MySQL o Aurora MySQL si chiudano correttamente.

Utilizza altri metodi di risoluzione dei problemi

Se continui a ricevere il messaggio di errore "Got an error reading communications packets", intraprendi una delle seguenti azioni:

Informazioni correlate

Perché le connessioni al database sulla mia istanza di database di RDS si sono interrotte?

Come posso visualizzare e scaricare i log per un cluster di database Aurora serverless?