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

Se le connessioni server-client vengono interrotte, vengono chiuse in modo errato o non vanno a buon fine, Amazon RDS incrementa il contatore di stato per aborted_clients o aborted_connects. Il parametro aborted_clients descrive il numero di connessioni annullate da Amazon RDS perché il client si è interrotto e non ha chiuso correttamente la connessione. Il parametro aborted_connects descrive il numero di tentativi non riusciti di connessione al server MySQL.

Se il valore di uno di questi parametri aumenta, nei log viene visualizzato il seguente errore:

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

Se il valore di log_error_verbosity supera 2, si riceve anche l'errore precedente. Il parametro log\ _error\ _verbosity specifica il livello di dettaglio per gestire gli eventi destinati al log di errori.

Per ulteriori informazioni, consulta B.3.2.9 Communication errors and aborted connections sul sito web di MySQL.

I seguenti fattori possono causare l'errore Error reading communications packets:

  • Incompatibilità del client o del driver.
  • Firewall o proxy che possono chiudere qualsiasi connessione inattiva o bloccare una connessione.
  • Una connessione client-server chiusa in modo errato e che risulta in un numero maggiore di connessioni in sospeso all'interno di RDS per MySQL.
  • Un'applicazione client che termina in modo errato una connessione.
    Nota: MySQL chiude forzatamente le connessioni inattive di lunga durata.
  • 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: se il valore è troppo piccolo o le query richiedono più memoria di quella allocata per Amazon RDS per MySQL, si riceverà l'errore precedente.

Risoluzione

Controlla i valori dei parametri di timeout della connettività. Dopo aver identificato la causa principale del problema, modifica il valore del parametro in base al problema identificato. Quindi, monitora i log di errori di MySQL mentre esegui il test del nuovo valore.

Risoluzione dei problemi relativi alla configurazione

Verifica se stai utilizzando i valori predefiniti del gruppo di parametri Amazon RDS. Potrebbe essere necessario modificare il valore di timeout della connettività predefinito per l'istanza database. Per ulteriori informazioni, consulta la sezione Parameters related to connectivity timeout di Best practices for configuring parameters for Amazon RDS for MySQL, part 3: Parameters related to security, operational manageability, and connectivity timeout.

Imposta un valore più alto per connect_timeout per verificare se il valore riduce l'occorrenza dell'errore Error reading communications packets. Il parametro connect_timeout definisce il numero di secondi che l'istanza database del server MySQL deve attendere prima che l'istanza database risponda con un handshake errato. Per ulteriori informazioni, consulta connect\ _timeout sul sito web di MySQL.

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

Se l'istanza deve gestire query di grandi dimensioni, colonne BLOB di grandi dimensioni o stringhe lunghe, aumenta il valore di max_allowed_packet. Se una riga contiene più dati rispetto al valore max_allowed_packet, verrà visualizzato un messaggio di errore. Per ulteriori informazioni, consulta la sezione max_allowed_packet di Best practices for configuring parameters for Amazon RDS for MySQL, part 3: Parameters related to security, operational manageability, and connectivity timeout. Oppure, consulta max\ _allowed\ _packet sul sito web di MySQL. Inoltre, aumenta i valori net_write_timeout e net_read_timeout.

Nota: è possibile impostare i parametri net\ _write\ _timeout e net\ _read\ _timeout sullo stesso valore del parametro wait\ _timeout. Per ulteriori informazioni, consulta net_write_timeout e net_read_timeout sul sito web di MySQL.

Assicurati che le connessioni RDS per MySQL o compatibile con Aurora MySQL siano chiuse correttamente. Prima di uscire dal database, chiama la funzione mysql_close() dall'applicazione client.

Risoluzione avanzata dei problemi

Se ricevi ancora il messaggio di errore Error reading communications packets, esegui una delle seguenti operazioni:

Informazioni correlate

Come posso modificare i valori di un gruppo di parametri del database di Amazon RDS?

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

Come faccio ad abilitare i log su un cluster Aurora Serverless in modo da poterli visualizzare e scaricare?