Condividi tramite


Risolvere i problemi di connettività nel server flessibile del Database di Azure per MySQL.

MySQL Community Edition gestisce le connessioni usando un thread per ogni connessione. Di conseguenza, ogni connessione utente ottiene un thread del sistema operativo dedicato nel processo mysqld.

Esistono potenziali problemi associati a questo tipo di gestione delle connessioni. Ad esempio, l'uso della memoria è relativamente elevato se è presente un numero elevato di connessioni utente, anche se si tratta di connessioni inattive. Inoltre, esiste un livello superiore di contesa interna del server e sovraccarico del cambio di contesto quando si lavora con migliaia di connessioni utente.

Diagnosticare gli errori di connettività comuni

Ogni volta che l'istanza di Database di Azure per MySQL server flessibile riscontra problemi di connettività, tenere presente che i problemi possono verificarsi in uno dei tre livelli coinvolti: il dispositivo client, la rete o l'istanza del server flessibile Database di Azure per MySQL.

Di conseguenza, ogni volta che si diagnosticano gli errori di connettività, assicurarsi di prendere in considerazione i dettagli completi di:

  • Client, tra cui:
    • Configurazione (locale, macchina virtuale di Azure e così via o computer DBA).
    • Sistema operativo.
    • Software e versioni.
  • Stringa di connessione ed eventuali parametri inclusi.
  • Topologia di rete (stessa area? regole del firewall AZ? routing).
  • Pool di connessioni (parametri e configurazione), se ce ne sono in uso.

È anche importante determinare se il problema di connettività del database influisce su un singolo dispositivo client o su più dispositivi client. Se gli errori interessano solo uno dei diversi client, è probabile che il problema si verifichi con il client. Tuttavia, se tutti i client riscontrano lo stesso errore, è più probabile che il problema si trovi sul lato server di database o con la rete tra.

Assicurarsi di considerare anche il potenziale di overload del carico di lavoro, soprattutto se un'applicazione apre un picco di connessioni in un breve periodo di tempo. È possibile usare metriche come "Total Connections", "Active Connections" e "Aborted Connections" per esaminarlo.

Quando si stabilisce la connettività da un dispositivo client o da un'applicazione, la prima chiamata importante in mysql consiste nell’ottenere addrinfo, che esegue la conversione DNS dall'endpoint fornito a un indirizzo IP. Se il recupero dell'indirizzo ha esito negativo, MySQL visualizza un messaggio di errore, ad esempio "ERRORE 2005 (HY000): host server MySQL sconosciuto "mysql-example.mysql.database.azure.com" (11)" e il numero alla fine (11, 110 e così via).

Errore lato client 2.005 codici

Le note di riferimento rapido per alcuni codici di errore sul lato client 2.005 vengono visualizzate nella tabella seguente.

Codice ERRORE 2005 Note
(11) "EAI_SYSTEM - errore di sistema" Si è verificato un errore nella risoluzione DNS sul lato client. Non è un problema del server flessibile Database di Azure per MySQL. Usare dig/nslookup nel client per risolvere i problemi.
(110) "ETIMEDOUT - timeout Connessione" Si è verificato un timeout nella connessione al server DNS del client. Non è un problema del server flessibile Database di Azure per MySQL. Usare dig/nslookup nel client per risolvere i problemi.
(0) "nome sconosciuto" Il nome specificato non è stato risolvibile da DNS. Verificare l'input nel client. Questo probabilmente non è un problema con Database di Azure per MySQL server flessibile.

La seconda chiamata in mysql è con connettività socket e quando si esamina un messaggio di errore come "ERRORE 2003 (HY000): Non è possibile connettersi a Database di Azure per MySQL server flessibile in "mysql-example.mysql.database.azure.com" (111)", il numero alla fine (99, 110, 111, 113 e così via).

Codici di errore sul lato client 2.003

Le note di riferimento rapido per alcuni codici di errore sul lato client 2.003 vengono visualizzate nella tabella seguente.

Codice ERRORE 2003 Note
(99) "EADDRNOTAVAIL - Impossibile assegnare l'indirizzo richiesto" Questo errore non è causato da Database di Azure per MySQL server flessibile, ma dal lato client.
(110) "ETIMEDOUT - timeout Connessione" Si è verificato un timeout di connessione all'indirizzo IP specificato. È probabile che si tratti di un problema di sicurezza (regole del firewall) o di rete (routing). In genere, questo non è un problema con Database di Azure per MySQL server flessibile. Usare nc/telnet/TCPtraceroute nel dispositivo client per risolvere i problemi.
(111) "ECONNREFUSED - Connessione rifiutata" Mentre i pacchetti hanno raggiunto il server di destinazione, il server ha rifiutato la connessione. Potrebbe trattarsi di un tentativo di connessione al server errato o alla porta errata. Questo potrebbe anche essere correlato al servizio di destinazione (Database di Azure per MySQL server flessibile) inattivo, al ripristino dal failover o all'esecuzione del ripristino anomalo del sistema e non ancora all'accettazione delle connessioni. Questo problema potrebbe trovarsi sul lato client o sul lato server. Usare nc/telnet/TCPtraceroute nel dispositivo client per risolvere i problemi.
(113) "EHOSTUNREACH - Host non raggiungibile" La tabella di routing del dispositivo client non include un percorso alla rete in cui si trova il server di database. Controllare la configurazione di rete del dispositivo client.

Altri codici di errore

Le note di riferimento rapido per alcuni altri codici di errore correlati ai problemi che si verificano dopo che la connessione di rete con il server di database è stata stabilita correttamente, vengono visualizzate nella tabella seguente.

Codice errore Note
ERRORE 2013 "Connessione a MySQL persa" La connessione è stata stabilita, ma è stata persa in seguito. Questo può verificarsi se viene tentata una connessione a un elemento che non è MySQL, ad esempio, usando un client MySQL per connettersi a SSH sulla porta 22. Può verificarsi anche se l'utente con privilegi avanzati termina la sessione. Può verificarsi anche se il database raggiunge il timeout della sessione. In alternativa, può fare riferimento a problemi nel server di database, dopo aver stabilito la connessione. Questo può verificarsi in qualsiasi momento durante la durata della connessione client. Può indicare che il database ha avuto un problema grave.
ERRORE 1040 "Troppe connessioni" Il numero di client di database connessi è già al numero massimo configurato. È necessario valutare il motivo per cui vengono stabilite così tante connessioni sul database.
ERRORE 1045 "Accesso negato per l'utente" Il client ha fornito un nome utente o una password non corretti, pertanto, il database ha negato l'accesso.
ERRORE 2006 "MySQL server non è disponibile" Analogamente alla voce ERRORE 2013 "Connessione a MySQL server persa" nella tabella precedente.
ERRORE 1317 "L'esecuzione della query è stata interrotta" Errore che il client riceve quando l'utente primario arresta la query, non la connessione.
ERRORE 1129 "Host 1.2.3.4 bloccato a causa di molti errori di connessione" Sblocco con "mysqladmin flush-hosts": tutti i client in un singolo computer verranno bloccati se un client di tale computer tenta più volte di usare il protocollo errato per connettersi a MySQL (telnetting alla porta MySQL è un esempio). Come viene visualizzato il messaggio di errore, l'utente amministratore del database deve eseguire FLUSH HOSTS; per cancellare il problema.

Nota

Per altre informazioni sugli errori di connettività, vedere il post di blog Analisi dei problemi di connessione con Database di Azure per MySQL server flessibile.

Passaggio successivo