Dela via


Felsöka anslutningsproblem i Azure Database for MySQL – flexibel 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 azure database for MySQL – flexibel serverinstans.

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.
  • Anslutningssträng och eventuella inkluderade parametrar.
  • Nätverkstopologi (samma region? samma AZ? brandväggsregler? routning).
  • Anslutningspool (parametrar och konfiguration), om en används.

Det är också 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 är med den klienten. Men om alla klienter har samma fel är det mer troligt att problemet finns på databasserversidan eller med nätverken däremellan.

Tänk också på risken för överbelastning av arbetsbelastningar, särskilt om ett program öppnar en våg av anslutningar på kort tid. Du kan använda mått som "Totalt antal anslutningar", "Aktiva anslutningar" och "Avbrutna anslutningar" 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 på klientsidan 2 005 koder

Snabbreferensanteckningar för vissa fel på klientsidan 2 005-koder 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 Azure Database for MySQL – flexibel 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 Azure Database for MySQL – flexibel 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.).

Fel på klientsidan 2 003-koder

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

FEL 2003-kod Anteckningar
(99) "EADDRNOTAVAIL – Kan inte tilldela begärd adress" Det här felet orsakas inte av Azure Database for MySQL – flexibel server, utan på klientsidan.
(110) "ETIMEDOUT – tidsgränsen för anslutning uppnåddes" Tidsgränsen uppnåddes vid anslutning till den angivna IP-adressen. Sannolikt ett problem med säkerhet (brandväggsregler) eller nätverk (routning). Detta är vanligtvis inte ett problem med Azure Database for MySQL – flexibel 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 Azure Database for MySQL – flexibel server.

Gå vidare