Salta al contenuto

Perché ricevo un errore "Too many connections error" quando mi connetto alla mia istanza Amazon Aurora MySQL?

5 minuti di lettura
0

Desidero connettermi alla mia istanza database Amazon Aurora Edition compatibile con MySQL, ma ricevo un errore "Too many connections". Desidero sapere qual è il valore massimo di connessione per la mia istanza database e come modificarlo.

Breve descrizione

Quando il numero di connessioni client supera il valore del parametro max_connections in un'istanza database, ricevi il messaggio di errore "Too many connections".

Per risolvere il problema, visualizza in primo luogo tutte le query e tutti i thread in esecuzione nell'istanza database. Quindi attiva la registrazione nell'istanza database. Rivedi le connessioni esistenti e interrompi quelle non necessarie per ridurre la pressione delle connessioni. Inoltre, regola i parametri di connessione MySQL. Se il problema persiste, aumenta il numero massimo di connessioni all'istanza database.

Risoluzione

Visualizza tutte le query e tutti i thread in esecuzione nell'istanza database

Visualizza tutte le query in esecuzione nell'istanza database. Quindi seleziona il valore Threads_Connected per visualizzare il numero di connessioni aperte. Per ulteriori informazioni, consulta Threads_Connected sul sito web MySQL.

Per MySQL 5.7, esegui questo comando:

mysql> SELECT variable_value AS Threads_Connected FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE variable_name='threads_connected';

Per MySQL 8.0, esegui questo comando:

mysql> SELECT variable_value AS Threads_Connected from performance_schema.global_status where VARIABLE_NAME = 'threads_connected';

Nota: poiché Aurora può connettersi al database dall'utente amministratore rdsadmin, il valore di threads_connected potrebbe essere superiore a max_connections.

È consigliabile utilizzare threads_connected o information_schema.processlist invece di DatabaseConnections. I parametri threads_connected e information_schema.processlist mostrano le connessioni MySQL disponibili utilizzate da altri client.

DatabaseConnections mostra le connessioni TCP remote totali, non le connessioni in standby o le sessioni che il motore di database crea per i propri scopi. Di conseguenza, il valore DatabaseConnections potrebbe essere inferiore al numero di operazioni eseguite dai thread MySQL.

Attiva la registrazione nell'istanza database

Attiva la registrazione nell'istanza database Aurora compatibile con MySQL per identificare la causa principale dell'aumento del numero di connessioni. Puoi attivare general_log, slow_query_log o i parametri di log Audit avanzato.

Termina le connessioni non necessarie nell'istanza database

Utilizza i comandi rds_kill e rds_kill_query per terminare le sessioni utente e le query non necessarie in esecuzione nell'istanza database.

Modifica i parametri di connessione MySQL

Modifica i seguenti parametri di connessione MySQL per l'istanza database in base ai valori preferiti:

  • wait_timeout
  • interactive_timeout
  • net_read_timeout
  • net_write_timeout
  • max_execution_time
  • max_connect_errors
  • max_user_connections

Per ulteriori informazioni su ciascuno dei parametri precedenti, consulta Server System Variables (Variabili di sistema del server) sul sito web MySQL.

Aumenta il numero massimo di connessioni all'istanza database

Se il problema persiste dopo aver modificato i parametri di connessione, aumenta il numero massimo di connessioni all'istanza database. Per ottenere il valore max\ _connections corrente per l'istanza database, controlla il gruppo di parametri collegato all'istanza database. Esegui questa query:

select @@max_connections;

Aurora compatibile con MySQL e Amazon Relational Database Service (Amazon RDS) per le istanze database MySQL presentano sovraccarichi di memoria diversi. Il valore max_connections potrebbe essere diverso per le istanze database Aurora compatibili con MySQL e Amazon RDS per MySQL che utilizzano la stessa classe di istanza.

Per determinare il numero massimo di connessioni per la classe di istanza, utilizza la seguente formula:

max_connections = MASSIMO({log(17179869184/805306368)*45},{log(17179869184/8187281408)*1000})

Nota: l'esempio precedente è per un'istanza db.r8g.large compatibile con Aurora MySQL con 16 GiB di memoria. DBInstanceClassMemory è uguale a 17.179.869.184 byte. Il valore corrente per max_connections è 1.000.

Esempio di risultato:

max_connections = MASSIMO(195.56,1000) = 1.000

Nota: il numero massimo di connessioni per questa classe di istanza db.r8g.large con 16 GiB di memoria è uguale al valore predefinito.

Aumenta il parametro max_connections

Nota: non è consigliabile aumentare il valore max_connections oltre il valore predefinito. Piuttosto scala l'istanza database.

Se non scali l'istanza database e scegli invece di aumentare il valore di max_connections, completa i seguenti passaggi:

  1. Crea un gruppo di parametri dell'istanza database personalizzato.
  2. Associa il gruppo di parametri all'istanza database.
  3. Aumenta il valore del parametro max_connections.
    Nota: non si verifica un'interruzione quando imposti un valore max_connections maggiore.

Aumenta verticalmente l'istanza

Se superi il valore massimo per il parametro max_connections, è consigliabile scalare la classe dell'istanza database. L'istanza database può subire un'interruzione quando viene scalata.

Utilizza le best practice per regolare in maniera ottimale il parametro max_connections

Se hai modificato le impostazioni del buffer pool e della cache delle query per il cluster di database, modifica la quota di connessioni per tenere conto dell'aumento o della diminuzione della memoria disponibile nelle istanze database.

Imposta il parametro max_connections su un valore leggermente superiore al numero massimo di connessioni che prevedi di aprire in ogni istanza database.

Se hai attivato Approfondimenti sulle prestazioni, lo schema delle prestazioni viene attivato automaticamente. È consigliabile utilizzare il valore predefinito di max_connections quando lo schema delle prestazioni è attivato. Le strutture di memoria dello schema delle prestazioni vengono dimensionate automaticamente in base alla configurazione del server.

Importante: Approfondimenti sulle prestazioni giungerà al termine del suo ciclo di vita il 30 novembre 2025. Entro tale data puoi passare alla modalità Avanzata di Database Insights. Se non esegui l'aggiornamento, i cluster di database che utilizzano Approfondimenti sulle prestazioni passeranno automaticamente alla modalità Standard di Database Insights. Solo la modalità Avanzata di Database Insights supporta i piani di esecuzione e l'analisi on demand. Se i cluster dovessero passare automaticamente alla modalità Standard, potresti non essere in grado di utilizzare queste funzionalità sulla console. Per attivare la modalità Avanzata, consulta Attivazione della modalità avanzata di Database Insights per Amazon RDS e Attivazione della modalità avanzata di Database Insights per Amazon Aurora.

Utilizza il proxy Amazon RDS

Se continui a ricevere un errore, migliora la capacità di dimensionamento dell'applicazione utilizzando il Server proxy per Amazon RDS in Aurora .

Informazioni correlate

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

AWS UFFICIALEAggiornata 4 mesi fa