Felsöka anslutningsproblem i Azure Database for MySQL – flexibel server

GÄLLER FÖR: Azure Database for MySQL – Azure Database for MySQL – enskild server – flexibel server

Viktigt!

Azure Database for MySQL – enskild server är på väg att dras tillbaka. Vi rekommenderar starkt att du uppgraderar till en flexibel Azure Database for MySQL-server. Mer information om hur du migrerar till en flexibel Azure Database for MySQL-server finns i Vad händer med Azure Database for MySQL – enskild server?

MySQL Community Edition hanterar anslutningar med en tråd per anslutning. Därför får varje användaranslutning en dedikerad operativsystemtråd i mysqld-processen.

Det finns potentiella problem som är associerade med den här typen av anslutningshantering. Minnesanvändningen är till exempel relativt hög om det finns ett stort antal användaranslutningar, även om de är inaktiva anslutningar. Dessutom finns det en högre nivå av intern serverkonkurrens och kontextväxling när du arbetar med tusentals användaranslutningar.

Diagnostisera vanliga anslutningsfel

När din instans av Azure Database for MySQL – flexibel server har anslutningsproblem bör du komma ihåg att det kan finnas problem i något av de tre lager som ingår: klientenheten, nätverket eller din flexibla Serverinstans för Azure Database for MySQL.

När du diagnostiserar anslutningsfel bör du därför tänka på fullständig information om följande:

  • Klient, inklusive:
    • Konfiguration (lokalt, virtuell Azure-dator osv. eller en DBA-dator).
    • Operativsystem.
    • Programvara och versioner.
  • Anslut ionssträng och eventuella parametrar som ingår.
  • Nätverkstopologi (samma region? samma AZ? brandväggsregler? routning).
  • Anslut ionspool (parametrar och konfiguration) om en används.

Det är även viktigt att avgöra om problemet med databasanslutningen påverkar en enskild klientenhet eller flera klientenheter. Om felen bara påverkar en av flera klienter är det troligt att problemet ligger hos den klienten. Men om alla klienter har samma fel är det mer troligt att problemet finns på databasserversidan eller i nätverken däremellan.

Se också till att beakta möjligheten av överbelastning av laster, särskilt om ett program öppnar en stor mängd anslutningar på mycket kort tid. Du kan använda mått som "Total Anslut ions", "Active Anslut ions" och "Aborted Anslut ions" för att undersöka detta.

När du upprättar en anslutning från en klientenhet eller ett program är det första viktiga anropet i mysql att getaddrinfo, som utför DNS-översättningen från slutpunkten som tillhandahålls till en IP-adress. Om det inte går att hämta adressen visas ett felmeddelande i MySQL, till exempel "FEL 2005 (HY000): Okänd MySQL-servervärd "mysql-example.mysql.database.azure.com" (11)" och numret i slutet (11, 110 osv.).

Fel 2005-koder på klientsidan

Snabbreferensanteckningar för vissa fel 2005-koder på klientsidan visas i följande tabell.

FEL 2005-kod Anteckningar
(11) "EAI_SYSTEM – systemfel" Det finns ett fel på DNS-matchningen på klientsidan. Inte ett problem med en flexibel Azure Database for MySQL-server. Använd dig/nslookup på klienten för att felsöka.
(110) "ETIMEDOUT – tidsgränsen för anslutning uppnåddes" Tidsgränsen uppnåddes när klientens DNS-server skulle anslutas. Inte ett problem med en flexibel Azure Database for MySQL-server. Använd dig/nslookup på klienten för att felsöka.
(0) "okänt namn" Det angivna namnet kunde inte matchas av DNS. Kontrollera indata på klienten. Detta är förmodligen inte ett problem med azure database for MySQL – flexibel server.

Det andra anropet i mysql är med socketanslutning och när du tittar på ett felmeddelande som "FEL 2003 (HY000): Det går inte att ansluta till Azure Database for MySQL – flexibel server på "mysql-example.mysql.database.azure.com" (111)", numret i slutet (99, 110, 111, 113 osv.).

Felkoder på klientsidan 2003

Snabbreferensanteckningar för vissa fel 2003-koder på klientsidan visas i följande tabell.

FEL 2003-kod Anteckningar
(99) "EADDRNOTAVAIL – Kan inte tilldela begärd adress" Det här felet orsakas inte av en flexibel Azure Database for MySQL-server, utan på klientsidan.
(110) "ETIMEDOUT – tidsgränsen för anslutning uppnåddes" Det gick inte att ansluta till den angivna IP-adressen. Sannolikt ett problem med säkerhet (brandväggsregler) eller nätverk (routning). Detta är vanligtvis inte ett problem med flexibel Azure Database for MySQL-server. Använd nc/telnet/TCPtraceroute på klientenheten för att felsöka.
(111) "ECONNREFUSED – Anslutningen nekades" När paketen nådde målservern avvisade servern anslutningen. Detta kan vara ett försök att ansluta till fel server eller fel port. Detta kan också bero på att måltjänsten (Azure Database for MySQL– flexibel server) är nere, återställer från redundans eller går igenom kraschåterställning och ännu inte accepterar anslutningar. Det här problemet kan vara antingen på klientsidan eller på serversidan. Använd nc/telnet/TCPtraceroute på klientenheten för att felsöka.
(113) "EHOSTUNREACH – Värden kan inte nås" Klientenhetens routningstabell innehåller inte någon sökväg till nätverket där databasservern finns. Kontrollera klientenhetens nätverkskonfiguration.

Andra felkoder

Snabbreferensanteckningar för några andra felkoder relaterade till problem som uppstår efter att nätverksanslutningen med databasservern har upprättats framgår av följande tabell.

Felkod Anteckningar
FEL 2013 "Anslutningen till MySQL-servern" Anslutningen upprättades, men den förlorades efteråt. Detta kan inträffa om en anslutning görs mot något som inte är MySQL (till exempel att använda en MySQL-klient för att ansluta till SSH på port 22). Det kan också inträffa om superanvändaren avslutar sessionen. Det kan också inträffa om databasen överskrider tidsgränsen för sessionen. Eller så kan det referera till problem på databasservern när anslutningen har upprättats. Detta kan inträffa när som helst under klientanslutningens livslängd. Det kan tyda på att databasen hade ett allvarligt problem.
FEL 1040 "För många anslutningar" Antalet anslutna databasklienter är redan det konfigurerade maximala antalet. Du måste utvärdera varför så många anslutningar upprättas mot databasen.
FEL 1045 "Åtkomst nekad för användare" Klienten angav ett felaktigt användarnamn eller lösenord, så databasen har nekat åtkomst.
FEL 2006 "MySQL-servern har försvunnit" Liknar posten FEL 2013 "Förlorad anslutning till MySQL-server" i föregående tabell.
FEL 1317 "Frågekörningen avbröts" Fel som klienten får när den primära användaren stoppar frågan, inte anslutningen.
FEL 1129 "Värden '1.2.3.4' blockeras på grund av många anslutningsfel" Avblockera med "mysqladmin flush-hosts" – alla klienter på en enda dator blockeras om en klient på den datorn försöker flera gånger att använda fel protokoll för att ansluta till MySQL (telnetting till MySQL-porten är ett exempel). Som felmeddelandet säger måste databasens administratörsanvändare köra FLUSH HOSTS; för att lösa problemet.

Kommentar

Mer information om anslutningsfel finns i blogginlägget Undersöka anslutningsproblem med flexibel Azure Database for MySQL-server.

Nästa steg

Om du vill hitta peer-svar på dina viktigaste frågor eller för att publicera eller besvara en fråga går du till Stack Overflow.