Verbindingsproblemen in Azure Database for MySQL - Flexibele server oplossen
De MySQL Community Edition beheert verbindingen met één thread per verbinding. Als gevolg hiervan krijgt elke gebruikersverbinding een toegewezen besturingssysteemthread in het mysqld-proces.
Er zijn mogelijke problemen met betrekking tot dit type verbindingsafhandeling. Het geheugengebruik is bijvoorbeeld relatief hoog als er een groot aantal gebruikersverbindingen is, zelfs als ze niet-actieve verbindingen zijn. Daarnaast is er een hoger niveau van interne serverconflicten en contextoverhead bij het werken met duizenden gebruikersverbindingen.
Veelvoorkomende connectiviteitsfouten vaststellen
Wanneer uw exemplaar van Azure Database for MySQL Flexible Server verbindingsproblemen ondervindt, moet u er rekening mee houden dat er problemen kunnen optreden in een van de drie betrokken lagen: het clientapparaat, het netwerk of uw exemplaar van Azure Database for MySQL Flexible Server.
Als u connectiviteitsfouten diagnosticeert, moet u daarom rekening houden met de volledige details van het volgende:
- Client, met inbegrip van:
- Configuratie (on-premises, Virtuele Azure-machine, enzovoort) of een DBA-machine.
- Besturingssysteem.
- Software en versies.
- Verbindingsreeks en eventuele opgenomen parameters.
- Netwerktopologie (dezelfde regio? dezelfde AZ? firewallregels? routering).
- Verbindingsgroep (parameters en configuratie), als deze in gebruik is.
Het is ook belangrijk om te bepalen of het probleem met de databaseverbinding van invloed is op één clientapparaat of meerdere clientapparaten. Als de fouten slechts een van de verschillende clients beïnvloeden, is het waarschijnlijk dat het probleem met die client is. Als alle clients echter dezelfde fout ondervinden, is het waarschijnlijker dat het probleem zich aan de serverzijde van de database bevindt of met het netwerk ertussen.
Houd er rekening mee dat u ook rekening houdt met het potentieel van overbelasting van workloads, met name als een toepassing in korte tijd een piek van verbindingen opent. U kunt metrische gegevens, zoals 'Totaal aantal verbindingen', 'Actieve verbindingen', en 'Afgebroken verbindingen', gebruiken om dit te onderzoeken.
Wanneer u verbinding maakt vanaf een clientapparaat of toepassing, is de eerste belangrijke aanroep in mysql het ophalen vanaddrinfo, waarmee de DNS-vertaling wordt uitgevoerd van het eindpunt dat is opgegeven in een IP-adres. Als het adres mislukt, wordt in MySQL een foutbericht weergegeven, zoals 'ERROR 2005 (HY000): Unknown MySQL server host 'mysql-example.mysql.database.azure.com' (11)' en het nummer aan het einde (11, 110, enzovoort).
Fout aan clientzijde 2005-codes
Opmerkingen bij snelzoekgids voor sommige fout aan de clientzijde 2005-codes worden weergegeven in de volgende tabel.
FOUT 2005-code | Notes |
---|---|
(11) "EAI_SYSTEM - systeemfout" | Er is een fout opgetreden in de DNS-resolutie aan de clientzijde. Geen probleem met Azure Database for MySQL Flexible Server. Gebruik dig/nslookup op de client om problemen op te lossen. |
(110) 'ETIMEDOUT - Time-out van verbinding | Er is een time-out opgetreden bij het maken van verbinding met de DNS-server van de client. Geen probleem met Azure Database for MySQL Flexible Server. Gebruik dig/nslookup op de client om problemen op te lossen. |
(0) naam onbekend | De opgegeven naam kan niet worden omgezet door DNS. Controleer de invoer op de client. Dit is waarschijnlijk geen probleem met Azure Database for MySQL Flexible Server. |
De tweede aanroep in mysql is met socketconnectiviteit en bij het bekijken van een foutbericht zoals 'ERROR 2003 (HY000): Kan geen verbinding maken met Azure Database for MySQL Flexible Server op 'mysql-example.mysql.database.azure.com' (111)', het nummer aan het einde (99, 110, 111, 113, enzovoort).
Fout aan clientzijde 2003-codes
Opmerkingen bij snelzoekgids voor sommige fout aan de clientzijde 2003-codes worden weergegeven in de volgende tabel.
FOUT 2003-code | Notes |
---|---|
(99) EADDRNOTAVAIL - Kan aangevraagd adres niet toewijzen | Deze fout wordt niet veroorzaakt door Azure Database for MySQL Flexible Server, in plaats daarvan aan de clientzijde. |
(110) 'ETIMEDOUT - Time-out van verbinding | Er is een time-out opgetreden bij het maken van verbinding met het opgegeven IP-adres. Waarschijnlijk is er een beveiligingsprobleem (firewallregels) of netwerkproblemen (routering). Dit is meestal geen probleem met Azure Database for MySQL Flexible Server. Gebruik nc/telnet/TCPtraceroute op het clientapparaat om problemen op te lossen. |
WSAECONNREFUSED - verbinding geweigerd | Terwijl de pakketten de doelserver bereikten, heeft de server de verbinding geweigerd. Dit kan een poging zijn om verbinding te maken met de verkeerde server of de verkeerde poort. Dit kan ook betrekking hebben op de doelservice (Azure Database for MySQL Flexible Server) die niet beschikbaar is, herstelt van failover of crashherstel uitvoert en nog geen verbindingen accepteert. Dit probleem kan zich aan de clientzijde of aan de serverzijde bevinden. Gebruik nc/telnet/TCPtraceroute op het clientapparaat om problemen op te lossen. |
(113) EHOSTUNREACH - Host onbereikbaar | De routeringstabel van het clientapparaat bevat geen pad naar het netwerk waarop de databaseserver zich bevindt. Controleer de netwerkconfiguratie van het clientapparaat. |
Overige foutcodes
Snelzoekgidsopmerkingen voor enkele andere foutcodes met betrekking tot problemen die optreden nadat de netwerkverbinding met de databaseserver tot stand is gebracht, worden weergegeven in de volgende tabel.
Foutcode | Notes |
---|---|
FOUT 2013: Verbinding met MySQL-server is verbroken | De verbinding is tot stand gebracht, maar daarna is deze verbroken. Dit kan gebeuren als een verbinding wordt geprobeerd met iets dat niet MySQL is (zoals het gebruik van een MySQL-client om bijvoorbeeld verbinding te maken met SSH op poort 22). Dit kan ook gebeuren als de supergebruiker de sessie beëindigt. Dit kan ook gebeuren als er een time-out optreedt voor de sessie in de database. Of het kan verwijzen naar problemen op de databaseserver, nadat de verbinding tot stand is gebracht. Dit kan op elk moment gebeuren tijdens de levensduur van de clientverbinding. Het kan erop wijzen dat de database een ernstig probleem heeft gehad. |
FOUT 1040 Te veel verbindingen | Het aantal verbonden databaseclients is al het geconfigureerde maximumaantal. U moet evalueren waarom er zoveel verbindingen tot stand zijn gebracht op basis van de database. |
FOUT 1045 Toegang geweigerd voor gebruiker | De client heeft een onjuiste gebruikersnaam of een onjuist wachtwoord opgegeven, zodat de database de toegang heeft geweigerd. |
FOUT 2006 MySQL-server is verdwenen | Vergelijkbaar met FOUT 2013 Verbinding met MySQL-server verbroken in de vorige tabel. |
FOUT 1317 Queryuitvoering is onderbroken | Fout die de client ontvangt wanneer de primaire gebruiker de query stopt, niet de verbinding. |
FOUT 1129 Host '1.2.3.4' is geblokkeerd vanwege veel verbindingsfouten | Blokkering opheffen met 'mysqladmin flush-hosts': alle clients op één computer worden geblokkeerd als één client van die computer meerdere keren probeert het verkeerde protocol te gebruiken om verbinding te maken met MySQL (telnetting naar de MySQL-poort is één voorbeeld). Zoals in het foutbericht wordt vermeld, moet de gebruiker met beheerdersrechten van de database worden uitgevoerd FLUSH HOSTS; om het probleem te wissen. |
Notitie
Zie het blogbericht Verbindingsproblemen onderzoeken met Azure Database for MySQL Flexible Server voor meer informatie over connectiviteitsfouten.