Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Risoluzione dei problemi di connessione per i database Aurora My SQL My SQL
Garantire una connettività affidabile tra le applicazioni e l'istanza RDS DB è fondamentale per il corretto funzionamento dei carichi di lavoro. Tuttavia, i problemi di connettività possono insorgere a causa di vari fattori, come configurazioni di rete, problemi di autenticazione o vincoli di risorse. Questa guida mira a fornire un approccio completo alla risoluzione dei problemi di connettività con Aurora My SQL My. SQL
Indice
L'identificazione della categoria specifica del problema di connettività può aiutare a restringere le potenziali cause e guidare il processo di risoluzione dei problemi. Ogni categoria potrebbe richiedere approcci e tecniche diversi per la diagnosi e la risoluzione. I problemi di connettività dei database possono essere generalmente classificati nelle seguenti categorie.
- Errori ed eccezioni di connessione
-
Gli errori e le eccezioni di connessione possono verificarsi per vari motivi, ad esempio stringhe di connessione errate, errori di autenticazione, interruzioni della rete o problemi del server di database. Le cause possono includere parametri di connessione non configurati correttamente, credenziali non valide, interruzioni della rete o arresti anomali o riavvii del server di database. Anche i gruppi di sicurezza configurati in modo errato, le impostazioni del cloud privato virtuale (VPC), le liste di controllo degli accessi alla rete (ACLs) e le tabelle di routing associate alle sottoreti possono causare problemi di connessione.
- Limite di connessione raggiunto
-
Questo problema si verifica quando il numero di connessioni simultanee al server del database supera il limite massimo consentito. I server di database hanno in genere un limite massimo di connessioni configurabile definito dal parametro max_connections nei cluster e nei gruppi di parametri di istanza. Imponendo un limite di connessione, il server di database garantisce di disporre di risorse sufficienti (ad esempio memoria e handle di file) per gestire le connessioni esistenti in modo efficiente e fornire prestazioni accettabili. CPU Le cause possono includere perdite di connessione nell'applicazione, un pool di connessioni inefficiente o un aumento imprevisto delle richieste di connessione.
- Timeout di connessione
-
I timeout di connessione si verificano quando l'applicazione client non è in grado di stabilire una connessione con il server del database entro un periodo di timeout specificato. Le cause più comuni includono problemi di rete, sovraccarico del server, regole del firewall e impostazioni di connessione non configurate correttamente.
- Timeout di connessione inattivi
-
Le connessioni inattive che rimangono inattive per un periodo prolungato potrebbero essere chiuse automaticamente dal server del database per risparmiare risorse. Questo timeout è in genere configurabile utilizzando
wait_timeout
and einteractive_timeout parameters
deve essere regolato in base ai modelli di utilizzo della connessione dell'applicazione. Le cause possono includere la logica dell'applicazione che lascia le connessioni inattive per periodi prolungati o una gestione impropria delle connessioni. - Disconnessione intermittente delle connessioni esistenti
-
Questa classe di errori si riferisce a uno scenario in cui le connessioni stabilite tra un'applicazione client e il database vengono interrotte o disconnesse in modo imprevisto a intervalli irregolari, nonostante siano attive e in uso. Queste disconnessioni si verificano in modo intermittente, nel senso che si verificano a intervalli irregolari e non in modo coerente. Le cause possono includere le seguenti:
-
Problemi relativi al server di database, ad esempio riavvii o failover
-
Gestione impropria della connessione all'applicazione
-
Problemi relativi al bilanciamento del carico e al proxy
-
Instabilità della rete
-
Problemi con componenti o middleware di terze parti coinvolti nel percorso di connessione
-
Timeout di esecuzione delle query
-
Limiti di risorse sul lato server o client
L'identificazione della causa principale attraverso il monitoraggio, la registrazione e l'analisi completi è fondamentale, mentre l'implementazione di meccanismi adeguati di gestione degli errori, pool di connessioni e tentativi di ripetizione può aiutare a mitigare l'impatto di queste disconnessioni intermittenti sulla funzionalità e sull'esperienza utente dell'applicazione.
-
La raccolta di dati completi relativi ai componenti dell'applicazione, del database, della rete e dell'infrastruttura è fondamentale per risolvere efficacemente i problemi di connettività tra un'applicazione e un database Aurora My SQL RDS . Raccogliendo registri, configurazioni e informazioni diagnostiche pertinenti, si ottengono informazioni preziose che possono aiutare a identificare la causa principale dei problemi di connettività e guidarvi verso una risoluzione appropriata.
I log e le configurazioni di rete, come le regole dei gruppi di sicurezza, VPC le impostazioni e le tabelle di routing, sono essenziali per identificare potenziali colli di bottiglia o configurazioni errate relative alla rete che potrebbero impedire all'applicazione di stabilire una connessione corretta con il database. Analizzando questi componenti di rete, è possibile assicurarsi che le porte necessarie siano aperte, che gli indirizzi IP siano consentiti e che le configurazioni di routing siano impostate correttamente.
- Timestamp
-
Registra i timestamp esatti in cui si verificano i problemi di connettività. Questo può aiutare a identificare i modelli o a correlare i problemi con altri eventi o attività.
- Registri del motore DB
-
Oltre ai registri generali del database, esamina i log del motore di database (ad esempio, My SQL error log e slow query log) per eventuali informazioni o errori pertinenti che potrebbero essere correlati ai problemi di connettività intermittente. Per ulteriori informazioni, consulta Registrazione per i database Aurora MySQL.
- Registri delle applicazioni client
-
Raccogli log dettagliati dalle applicazioni client che si connettono al database. I log delle applicazioni forniscono visibilità sui tentativi di connessione, sugli errori e su qualsiasi informazione rilevante dal punto di vista dell'applicazione, il che può rivelare problemi relativi alle stringhe di connessione, alle credenziali di autenticazione o alla gestione della connessione a livello di applicazione.
I log del database, d'altra parte, offrono informazioni sugli errori sul database, sulle query lente o sugli eventi che potrebbero contribuire ai problemi di connettività. Per ulteriori informazioni, consulta Registrazione per i database Aurora MySQL.
- Variabili di ambiente del client
-
Controlla se eventuali variabili di ambiente o impostazioni di configurazione sul lato client potrebbero influire sulla connessione al database, come le impostazioni proxy,SSL/TLSsettings o altre variabili pertinenti.
- Versioni della libreria client
-
Assicurati che il client utilizzi le versioni più recenti di tutti i driver, le librerie o i framework di database utilizzati per la connettività del database. Le versioni obsolete possono presentare problemi noti o problemi di compatibilità.
- Acquisizione dalla rete del client
-
Esegui un'acquisizione di rete sul lato client utilizzando uno strumento come Wireshark o
tcpdump
durante i periodi in cui si verificano problemi di connettività. Questo può aiutare a identificare eventuali problemi o anomalie relativi alla rete sul lato client. - Topologia della rete client
-
Comprendi la topologia di rete del client, inclusi eventuali firewall, sistemi di bilanciamento del carico o altri componenti come RDS Proxy o Proxy SQL che effettuano connessioni al database anziché essere il client a effettuare connessioni direttamente.
- Impostazioni del sistema operativo del client
-
Controlla le impostazioni del sistema operativo del client che potrebbero influire sulla connettività di rete, come le regole del firewall, le impostazioni degli adattatori di rete e qualsiasi altra impostazione pertinente.
- Configurazione del pool di connessioni
-
Se utilizzi un meccanismo di pool di connessioni nella tua applicazione, rivedi le impostazioni di configurazione e monitora le metriche del pool (ad esempio, connessioni attive, connessioni inattive e timeout di connessione) per assicurarti che il pool funzioni correttamente. Controlla anche le impostazioni del pool, come la dimensione massima del pool, la dimensione minima del pool e le impostazioni di convalida della connessione, per assicurarti che siano configurate correttamente.
- Stringa di connessione
-
La stringa di connessione include in genere parametri come il nome host o l'endpoint, il numero di porta, il nome del database e le credenziali di autenticazione. L'analisi della stringa di connessione può aiutare a identificare potenziali configurazioni errate o impostazioni errate che potrebbero causare problemi di connettività. Ad esempio, un nome host o un numero di porta errati possono impedire al client di raggiungere l'istanza del database, mentre credenziali di autenticazione non valide possono causare errori di autenticazione e il rifiuto della connessione. Inoltre, la stringa di connessione può rivelare problemi relativi al pool di connessioni, ai timeout o ad altre impostazioni specifiche della connessione che potrebbero contribuire a problemi di connettività. Fornire la stringa di connessione completa utilizzata dall'applicazione client può aiutare a individuare eventuali errori di configurazione sul client.
- Parametri del database
-
Monitora le metriche del database come CPU l'utilizzo, l'utilizzo della memoria e l'I/O del disco durante i periodi in cui si verificano problemi di connettività. Questi possono aiutare a identificare se l'istanza DB presenta un conflitto di risorse o problemi di prestazioni.
- DB engine version (Versione motore del database
-
Nota la versione del motore Aurora My SQL RDS DB. AWS rilascia regolarmente aggiornamenti che risolvono problemi noti, vulnerabilità di sicurezza e introducono miglioramenti delle prestazioni. Pertanto, consigliamo vivamente di eseguire l'aggiornamento alle ultime versioni disponibili, poiché questi aggiornamenti spesso includono correzioni di bug e miglioramenti specificamente correlati a connettività, prestazioni e stabilità. Fornire le informazioni sulla versione del database, insieme agli altri dettagli raccolti, può aiutare Supporto a diagnosticare e risolvere efficacemente i problemi di connettività.
- Metriche di rete
-
Raccogli parametri di rete come latenza, perdita di pacchetti e velocità effettiva durante i periodi in cui si verificano problemi di connettività. Strumenti come
ping
e strumenti di monitoraggio della rete possono aiutare a raccogliere questi dati.traceroute
- Informazioni sulla fonte e sul cliente
-
Determina gli indirizzi IP degli application server, dei load balancer o di qualsiasi altro componente che avvia le connessioni al database. Potrebbe trattarsi di un singolo indirizzo IP o di un intervallo di indirizzi IP (CIDRnotazione). Se l'origine è un'EC2istanza Amazon, è utile anche esaminare il tipo di istanza, la zona di disponibilità, l'ID di sottorete e i gruppi di sicurezza associati all'istanza e i dettagli dell'interfaccia di rete come l'indirizzo IP privato e l'indirizzo IP pubblico.
Analizzando a fondo i dati raccolti, è possibile identificare configurazioni errate, vincoli di risorse, interruzioni della rete o altri problemi di base che causano problemi di connettività intermittenti o persistenti. Queste informazioni consentono di intraprendere azioni mirate, come la regolazione delle configurazioni, la risoluzione di problemi di rete o la gestione delle connessioni a livello di applicazione.
Per monitorare e risolvere i problemi di connettività, puoi utilizzare le seguenti metriche e funzionalità.
- CloudWatch metriche
-
-
CPUUtilization
— Un CPU utilizzo elevato dell'istanza DB può rallentare l'esecuzione delle query, con conseguenti timeout o rifiuti di connessione. -
DatabaseConnections
— Monitora il numero di connessioni attive all'istanza DB. Un numero elevato di connessioni vicino al massimo configurato può indicare potenziali problemi di connettività o l'esaurimento del pool di connessioni. -
FreeableMemory
— La scarsa disponibilità di memoria può causare problemi di prestazioni e problemi di connettività a causa di limiti di risorse. -
NetworkReceiveThroughput
eNetworkTransmitThroughput
— Picchi o cali insoliti del throughput di rete possono indicare problemi di connettività o strozzature della rete.
-
- Parametri Performance Insights
-
Per risolvere i problemi di connettività in Aurora My SQL RDS for My Insights, analizza le metriche del database come le seguenti:
-
Aborted_clients
-
Aborted_connects
-
Connessioni
-
max_connections
-
Threads_connected
-
Threads_created
-
Threads_running
Queste metriche possono aiutarti a identificare i punti critici di connessione, rilevare problemi di rete o di autenticazione, ottimizzare il pool di connessioni e garantire una gestione efficiente dei thread. Per ulteriori informazioni, consulta Contatori Performance Insights per Aurora My SQL.
-
- Funzionalità di Performance Insights
-
-
Caricamento del database: visualizza il carico del database nel tempo e mettilo in correlazione con problemi di connettività o peggioramento delle prestazioni.
-
SQLStatistiche: analizza SQL le statistiche per identificare query o operazioni di database inefficienti che potrebbero contribuire a problemi di connettività.
-
Interrogazioni principali: identifica e analizza le query che richiedono più risorse, in modo da identificare potenziali problemi di prestazioni o query di lunga durata che potrebbero causare problemi di connettività.
-
Monitorando queste metriche e sfruttando Performance Insights, è possibile ottenere visibilità sulle prestazioni dell'istanza di database, sull'utilizzo delle risorse e sui potenziali colli di bottiglia che potrebbero causare problemi di connettività. Per esempio:
-
Un valore
DatabaseConnections
vicino al limite massimo può indicare l'esaurimento del pool di connessioni o una gestione impropria della connessione, con conseguenti problemi di connettività. -
Un valore elevato
CPUUtilization
o bassoFreeableMemory
può indicare vincoli di risorse, che possono causare un'esecuzione lenta delle query e timeout o rifiuti di connessione. -
L'analisi delle query principali e delle SQLstatistiche può aiutare a identificare le query inefficienti o che richiedono molte risorse e che potrebbero contribuire a problemi di connettività.
Inoltre, il monitoraggio dei CloudWatch registri e l'impostazione degli allarmi possono aiutarvi a identificare e rispondere in modo proattivo ai problemi di connettività prima che si aggravino.
È importante notare che, sebbene queste metriche e questi strumenti possano fornire informazioni preziose, devono essere utilizzati insieme ad altre procedure di risoluzione dei problemi.
Monitoraggio aggiuntivo per Aurora My SQL
- CloudWatch metriche
-
-
AbortedClients
— Tiene traccia del numero di connessioni client che non sono state chiuse correttamente. -
AuroraSlowConnectionHandleCount
— Tiene traccia del numero di operazioni lente di gestione della connessione, indicando potenziali problemi di connettività o rallentamenti delle prestazioni. -
AuroraSlowHandshakeCount
— Misura il numero di operazioni di handshake lente, che può anche essere un indicatore di problemi di connettività. -
ConnectionAttempts
— Misura il numero di tentativi di connessione effettuati all'istanza Aurora My SQL DB.
-
- Variabili di stato globali
-
Aurora_external_connection_count
— Mostra il numero di connessioni al database all'istanza DB, escluse le connessioni di RDS servizio utilizzate per i controlli dello stato del database.
Monitorando questi parametri e le variabili di stato globali, puoi ottenere visibilità sui modelli di connessione, sugli errori e sui potenziali colli di bottiglia che potrebbero causare problemi di connettività con la tua istanza Amazon Aurora My. SQL
Ad esempio, un numero elevato di AbortedClients
o AuroraSlowConnectionHandleCount
può indicare problemi di connettività.
Inoltre, l'impostazione di CloudWatch allarmi e notifiche può aiutarvi a identificare e rispondere in modo proattivo ai problemi di connettività prima che si aggravino e influiscano sulle prestazioni dell'applicazione.
Di seguito sono riportati alcuni errori di connettività comuni per i SQL database Aurora My SQL RDS , insieme ai relativi codici di errore e spiegazioni.
- Codice di errore 1040: troppe connessioni
-
Questo errore si verifica quando il client tenta di stabilire un numero di connessioni superiore al massimo consentito dal server del database. Le cause possibili sono:
-
Configurazione errata del pool di connessioni: se utilizzi un meccanismo di pool di connessioni, assicurati che la dimensione massima del pool non sia troppo alta e che le connessioni vengano rilasciate correttamente al pool.
-
Configurazione dell'istanza di database: verifica l'impostazione del numero massimo di connessioni consentite per l'istanza di database e modificala, se necessario, impostando il parametro.
max_connections
-
Concorrenza elevata: se più client o applicazioni si connettono contemporaneamente al database, è possibile raggiungere il limite massimo di connessioni consentito.
-
- Codice errore 1045: accesso negato per l'utente '...' @ '...' (utilizzando la password: YES /NO)
-
Questo errore indica un errore di autenticazione durante il tentativo di connessione al database. Le cause possibili sono:
-
Compatibilità del plug-in di autenticazione: verifica se il plug-in di autenticazione utilizzato dal client è compatibile con il meccanismo di autenticazione del server di database.
-
Nome utente o password errati: verifica che nella stringa di connessione o nel meccanismo di autenticazione vengano utilizzati il nome utente e la password corretti.
-
Autorizzazioni utente: assicurati che l'utente disponga delle autorizzazioni necessarie per connettersi all'istanza del database dall'host o dalla rete specificati.
-
- Codice errore 1049: database sconosciuto '...'
-
Questo errore indica che il client sta tentando di connettersi a un database che non esiste sul server. Le cause possibili sono:
-
Database non creato: assicurati che il database specificato sia stato creato sul server del database.
-
Nome del database errato: ricontrolla il nome del database utilizzato nella stringa di connessione o nella query per verificarne la precisione.
-
Autorizzazioni utente: verifica che l'utente disponga delle autorizzazioni necessarie per accedere al database specificato.
-
- Codice errore 1153: pacchetto ricevuto più grande dei byte «max_allowed_packet»
-
Questo errore si verifica quando il client tenta di inviare o ricevere dati che superano la dimensione massima del pacchetto consentita dal server del database. Le cause possibili sono:
-
Interrogazioni o set di risultati di grandi dimensioni: se si eseguono query che coinvolgono grandi quantità di dati, è possibile che il limite di dimensione dei pacchetti venga superato.
-
Impostazioni delle dimensioni dei pacchetti non configurate correttamente: controlla l'
max_allowed_packet
impostazione sul server del database e modificala se necessario. -
Problemi di configurazione della rete: assicurati che la configurazione di rete (ad esempio, la MTU dimensione) consenta le dimensioni dei pacchetti richieste.
-
- Codice errore 1226: l'utente '...' ha superato la risorsa 'max_user_connections' (valore corrente:...)
-
Questo errore indica che l'utente ha superato il numero massimo di connessioni simultanee consentite dal server del database. Le possibili cause includono le seguenti:
-
Configurazione errata del pool di connessioni: se si utilizza un meccanismo di pool di connessioni, assicuratevi che la dimensione massima del pool non sia troppo alta per il limite di connessione dell'utente.
-
Configurazione dell'istanza del database: verifica l'
max_user_connections
impostazione per l'istanza del database e modificala se necessario. -
Concorrenza elevata: se più client o applicazioni si connettono contemporaneamente al database utilizzando lo stesso utente, è possibile raggiungere il limite di connessione specifico dell'utente.
-
- Codice di errore 2003: impossibile connettersi al mio SQL server su '...' (10061)
-
Questo errore si verifica in genere quando il client non è in grado di stabilire una connessione TCP /IP con il server del database. Può essere causato da vari problemi, come i seguenti:
-
Stato dell'istanza del database: assicurati che l'istanza del database sia nello
available
stato in cui si trova e che non sia sottoposta a operazioni di manutenzione o backup. -
Regole del firewall: verifica se eventuali firewall (sistema operativo, rete o gruppo di sicurezza) bloccano la connessione sulla porta specificata (in genere 3306 per My). SQL
-
Nome host o endpoint errati: assicurati che il nome host o l'endpoint utilizzato nella stringa di connessione sia corretto e corrisponda all'istanza del database.
-
Problemi di connettività di rete: verifica che il computer client possa raggiungere l'istanza del database attraverso la rete. Verifica eventuali interruzioni di rete, problemi di routing VPC o configurazioni errate della sottorete.
-
- Codice di errore 2005: sconosciuto Il mio SQL server host '...' (11001)
-
Questo errore si verifica quando il client non è in grado di risolvere il nome host o l'endpoint del server del database in un indirizzo IP. Le cause possibili sono:
-
DNSproblemi di risoluzione: verifica che il computer client sia in grado di risolvere correttamente il nome host utilizzando. DNS Controlla le DNS impostazioni, DNS la cache e prova a utilizzare l'indirizzo IP anziché il nome host.
-
Nome host o endpoint errati: ricontrolla il nome host o l'endpoint utilizzato nella stringa di connessione per verificarne la precisione.
-
Problemi di configurazione della rete: assicurati che la configurazione di rete del client (ad esempioVPC, le tabelle di sottorete e route) consenta la DNS risoluzione e la connettività all'istanza del database.
-
- Codice di errore 2026: SSL errore di connessione
-
Questo errore si verifica quando si verifica un problema con la TLS configurazioneSSL/o la convalida del certificato durante il tentativo di connessione. Le cause possibili sono:
-
Scadenza del certificato: verifica se il TLS certificatoSSL/utilizzato dal server è scaduto e deve essere rinnovato.
-
Problemi di convalida del certificato: verifica che il client sia in grado di convalidare correttamente il TLS certificatoSSL/del server e che il certificato sia affidabile.
-
Problemi di configurazione della rete: assicurati che la configurazione di rete consenta il processo di SSL/TLS connections and doesn't block or interfere with the SSL/TLS handshake.
-
SSL/TLS configuration mismatch – Make sure that the SSL/TLSle impostazioni (ad esempio, suite di crittografia e versioni di protocollo) sul client e sul server sono compatibili.
-
- Numero massimo connessioni
-
La regolazione di questi parametri può aiutare a prevenire i problemi di connessione causati dal raggiungimento del limite massimo consentito di connessioni. Assicurati che questi valori siano impostati in modo appropriato in base ai requisiti di concorrenza e ai vincoli di risorse dell'applicazione.
-
max_connections
— Questo parametro specifica il numero massimo di connessioni simultanee consentite all'istanza DB. -
max_user_connections
— Questo parametro può essere specificato durante la creazione e la modifica dell'utente e imposta il numero massimo di connessioni simultanee consentite per un account utente specifico.
-
- Dimensione del buffer di rete
-
L'aumento di questi valori può migliorare le prestazioni della rete, in particolare per i carichi di lavoro che comportano trasferimenti di dati o set di risultati di grandi dimensioni. Tuttavia, fai attenzione poiché buffer di dimensioni maggiori possono consumare più memoria.
-
net_buffer_length
— Questo parametro imposta la dimensione iniziale per la connessione del client e i buffer dei risultati, bilanciando l'utilizzo della memoria con le prestazioni delle query. -
max_allowed_packet
— Questo parametro specifica la dimensione massima di un singolo pacchetto di rete che può essere inviato o ricevuto dall'istanza DB.
-
- Compressione di rete (lato client)
-
L'attivazione della compressione di rete può ridurre l'utilizzo della larghezza di banda della rete, ma può aumentare il CPU sovraccarico sia sul lato client che sul lato server.
-
compress
— Questo parametro abilita o disabilita la compressione di rete per le comunicazioni client/server. -
compress_protocol
— Questo parametro specifica il protocollo di compressione da utilizzare per le comunicazioni di rete.
-
- Ottimizzazione delle prestazioni di rete
-
La regolazione di questi timeout può aiutare a gestire le connessioni inattive e prevenire l'esaurimento delle risorse, ma fai attenzione perché valori bassi possono causare interruzioni premature della connessione.
-
interactive_timeout
— Questo parametro specifica il numero di secondi in cui il server attende l'attività su una connessione interattiva prima di chiuderla. -
wait_timeout
— Questo parametro determina il numero di secondi in cui il server attende l'attività su una connessione non interattiva prima di chiuderla.
-
- Impostazioni di timeout di rete
-
La regolazione di questi timeout può aiutare a risolvere i problemi relativi alle connessioni lente o che non rispondono. Attenzione però a non impostarli su valori troppo bassi, in quanto ciò può causare interruzioni premature della connessione.
-
net_read_timeout
— Questo parametro specifica il numero di secondi di attesa di ulteriori dati da una connessione prima di terminare l'operazione di lettura. -
net_write_timeout
— Questo parametro determina il numero di secondi di attesa per la scrittura di un blocco su una connessione prima di terminare l'operazione di scrittura.
-
Esempio 1: risoluzione dei tentativi di connessione non riusciti
I tentativi di connessione possono fallire per diversi motivi, tra cui errori di autenticazioneSSL, errori di TLS handshake, max_connections
limite raggiunto e vincoli di risorse sull'istanza DB.
È possibile tenere traccia del numero di connessioni non riuscite da Performance Insights o utilizzando il comando seguente.
mysql> show global status like 'aborted_connects'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | Aborted_connects | 7 | +------------------+-------+ 1 row in set (0.00 sec)
Se il numero Aborted_connects
aumenta nel tempo, è possibile che l'applicazione presenti problemi di connettività intermittenti.
È possibile utilizzare Aurora Advanced Auditing per registrare le connessioni e le disconnessioni dalle connessioni client. È possibile farlo impostando i seguenti parametri nel gruppo di parametri del cluster DB:
-
server_audit_logging
=1
-
server_audit_events
=CONNECT
Di seguito è riportato un estratto dei registri di controllo relativi a un accesso non riuscito.
1728498527380921,auora-mysql-node1,user_1,172.31.49.222,147189,0,FAILED_CONNECT,,,1045 1728498527380940,auora-mysql-node1,user_1,172.31.49.222,147189,0,DISCONNECT,,,0
Dove:
-
1728498527380921
— Il timestamp dell'epoca in cui si è verificato l'accesso non riuscito -
aurora-mysql-node1
— L'identificatore di istanza del nodo del cluster Aurora SQL My su cui la connessione non è riuscita -
user_1
— Il nome dell'utente del database per il quale l'accesso non è riuscito -
172.31.49.222
— L'indirizzo IP privato del client da cui è stata stabilita la connessione -
147189
— L'ID di connessione dell'accesso non riuscito -
FAILED_CONNECT
— Indica che la connessione non è riuscita. -
1045
— Il codice di ritorno. Un valore diverso da zero indica un errore. In questo caso,1045
corrisponde all'accesso negato.
Per ulteriori informazioni, consulta Codici di errore del server
È inoltre possibile esaminare i log degli SQL errori di Aurora My per eventuali messaggi di errore correlati, ad esempio:
2024-10-09T19:26:59.310443Z 220 [Note] [MY-010926] [Server] Access denied for user 'user_1'@'172.31.49.222' (using password: YES) (sql_authentication.cc:1502)
Esempio 2: Risoluzione dei problemi di disconnessione anomala del client
È possibile tenere traccia del numero di disconnessioni anomale dei client da Performance Insights o utilizzando il comando seguente.
mysql> show global status like 'aborted_clients'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | Aborted_clients | 9 | +-----------------+-------+ 1 row in set (0.01 sec)
Se il numero di connessioni Aborted_clients
aumenta nel tempo, significa che l'applicazione non chiude correttamente le connessioni al database. Se le connessioni non vengono chiuse correttamente, possono verificarsi perdite di risorse e potenziali problemi di prestazioni. Lasciare le connessioni aperte inutilmente può consumare risorse di sistema, come memoria e descrittori di file, con il rischio che l'applicazione o il server non rispondano o si riavviino.
È possibile utilizzare la seguente query per identificare gli account che non chiudono correttamente le connessioni. Recupera il nome dell'account utente, l'host da cui l'utente si connette, il numero di connessioni non chiuse e la percentuale di connessioni non chiuse.
SELECT ess.user, ess.host, (a.total_connections - a.current_connections) - ess.count_star AS not_closed, (((a.total_connections - a.current_connections) - ess.count_star) * 100) / (a.total_connections - a.current_connections) AS pct_not_closed FROM performance_schema.events_statements_summary_by_account_by_event_name AS ess JOIN performance_schema.accounts AS a ON (ess.user = a.user AND ess.host = a.host) WHERE ess.event_name = 'statement/com/quit' AND (a.total_connections - a.current_connections) > ess.count_star; +----------+---------------+------------+----------------+ | user | host | not_closed | pct_not_closed | +----------+---------------+------------+----------------+ | user1 | 172.31.49.222 | 1 | 33.3333 | | user1 | 172.31.93.250 | 1024 | 12.1021 | | user2 | 172.31.93.250 | 10 | 12.8551 | +----------+---------------+------------+----------------+ 3 rows in set (0.00 sec)
Dopo aver identificato gli account utente e gli host dai quali le connessioni non sono chiuse, puoi procedere a controllare il codice che non chiude correttamente le connessioni.
Ad esempio, con il SQL connettore My in Python, utilizzate il close()
metodo dell'oggetto di connessione per chiudere le connessioni. Ecco un esempio di funzione che stabilisce una connessione a un database, esegue una query e chiude la connessione:
import mysql.connector def execute_query(query): # Establish a connection to the database connection = mysql.connector.connect( host="your_host", user="your_username", password="your_password", database="your_database" ) try: # Create a cursor object cursor = connection.cursor() # Execute the query cursor.execute(query) # Fetch and process the results results = cursor.fetchall() for row in results: print(row) finally: # Close the cursor and connection cursor.close() connection.close()
In questo esempio, il connection.close()
metodo viene chiamato nel finally
blocco per assicurarsi che la connessione sia chiusa, indipendentemente dal fatto che si verifichi un'eccezione.