Řešení potíží s připojením na flexibilním serveru Azure Database for MySQL
MySQL Community Edition spravuje připojení pomocí jednoho vlákna na připojení. V důsledku toho každé připojení uživatele získá vyhrazené vlákno operačního systému v procesu mysqld.
K tomuto typu zpracování připojení jsou spojené potenciální problémy. Například využití paměti je relativně vysoké, pokud existuje velký počet uživatelských připojení, i když jsou nečinná připojení. Při práci s tisíci uživatelských připojení navíc existuje vyšší úroveň kolize interního serveru a režijní náklady na přepínání kontextu.
Diagnostika běžných chyb připojení
Vždy, když u vaší instance flexibilního serveru Azure Database for MySQL dochází k problémům s připojením, mějte na paměti, že problémy můžou existovat ve všech třech vrstvách: na klientském zařízení, v síti nebo v instanci flexibilního serveru Azure Database for MySQL.
V důsledku toho nezapomeňte při diagnostice chyb připojení zvážit úplné podrobnosti o těchto chybách:
- Klient, včetně:
- Konfigurace (místní, virtuální počítač Azure atd. nebo počítač DBA).
- Operační systém.
- Software a verze.
- Připojovací řetězec a všechny zahrnuté parametry.
- Síťová topologie (stejná oblast? stejná pravidla brány firewall? AZ? směrování).
- Fond připojení (parametry a konfigurace), pokud se používá.
Je také důležité určit, jestli problém s připojením k databázi ovlivňuje jedno klientské zařízení nebo několik klientských zařízení. Pokud chyby ovlivňují pouze jeden z několika klientů, je pravděpodobné, že problém je s tímto klientem. Pokud se ale u všech klientů zobrazuje stejná chyba, je pravděpodobnější, že problém je na straně databázového serveru nebo u sítě mezi.
Nezapomeňte vzít v úvahu také potenciál přetížení úloh, zejména pokud aplikace otevře nárůst připojení za krátkou dobu. K prozkoumání můžete použít metriky, jako jsou Total Connections (Celková připojení), Active Connections (Aktivní připojení) a Aborted Connections (Přerušená připojení).
Když navážete připojení z klientského zařízení nebo aplikace, prvním důležitým voláním v mysql je getaddrinfo, které provádí překlad DNS z koncového bodu zadaného na IP adresu. Pokud se adresa nezdaří, MySQL zobrazí chybovou zprávu typu CHYBA 2005 (HY000): Neznámý hostitel serveru MySQL mysql-example.mysql.database.azure.com (11) a číslo na konci (11, 110 atd.).
Chyba na straně klienta 2 005 kódů
Rychlé referenční poznámky k některým kódům na straně klienta 2 005 se zobrazí v následující tabulce.
CHYBA 2005 – kód | Poznámky |
---|---|
(11) EAI_SYSTEM – chyba systému | Na straně klienta došlo k chybě překladu DNS. Nejedná se o problém s flexibilním serverem Azure Database for MySQL. K řešení potíží použijte nástroj dig/nslookup na klientovi. |
(110) ETIMEDOUT - Připojení vypršelo | Došlo k vypršení časového limitu připojení k serveru DNS klienta. Nejedná se o problém s flexibilním serverem Azure Database for MySQL. K řešení potíží použijte nástroj dig/nslookup na klientovi. |
(0) neznámý název | Zadaný název DNS nebylo možné přeložit. Zkontrolujte vstup v klientovi. Pravděpodobně se nejedná o problém s flexibilním serverem Azure Database for MySQL. |
Druhé volání v mysql je s připojením soketů a při pohledu na chybovou zprávu typu CHYBA 2003 (HY000): Nejde se připojit k flexibilnímu serveru Azure Database for MySQL na mysql-example.mysql.database.azure.com (111), číslo na konci (99, 110, 111, 113 atd.).
Chyba na straně klienta 2 003 kódů
Rychlé referenční poznámky k některým kódům na straně klienta 2 003 se zobrazují v následující tabulce.
CHYBA 2003 – kód | Poznámky |
---|---|
(99) EADDRNOTAVAIL – Nelze přiřadit požadovanou adresu | Tato chyba není způsobena flexibilním serverem Azure Database for MySQL, spíše na straně klienta. |
(110) ETIMEDOUT - Připojení vypršelo | Došlo k vypršení časového limitu připojení k zadané IP adrese. Pravděpodobně problém se zabezpečením (pravidly brány firewall) nebo sítěmi (směrováním). Obvykle se nejedná o problém s flexibilním serverem Azure Database for MySQL. K řešení potíží použijte nc/telnet/TCPtraceroute na klientském zařízení. |
(111) ECONNREFUSED - Spojení zamítnuto | Ačkoliv pakety dosáhly cílového serveru, server odmítl připojení. Může se jednat o pokus o připojení k nesprávnému serveru nebo nesprávnému portu. To také může souviset s výpadkem cílové služby (flexibilní server Azure Database for MySQL), zotavením z převzetí služeb při selhání nebo zotavením po havárii a nedostupováním připojení. Tento problém může být na straně klienta nebo na straně serveru. K řešení potíží použijte nc/telnet/TCPtraceroute na klientském zařízení. |
(113) EHOSTUNREACH – nedostupný hostitel | Směrovací tabulka klientského zařízení neobsahuje cestu k síti, na které se nachází databázový server. Zkontrolujte konfiguraci sítě klientského zařízení. |
Jiné kódy chyb
Stručné poznámky k některým dalším chybovým kódům souvisejícím s problémy, které se vyskytnou po úspěšném navázání síťového spojení s databázovým serverem, jsou uvedeny v následující tabulce.
Kód chyby | Poznámky |
---|---|
CHYBA 2013 Ztráta připojení k serveru MySQL | Spojení bylo navázáno, ale poté bylo ztraceno. K tomu může dojít v případě, že se pokusíte o připojení k něčemu, co není MySQL (například pomocí klienta MySQL pro připojení k SSH na portu 22). Může k tomu dojít také v případě, že superuživatel relaci ukončí. Může k tomu dojít také v případě, že databázi vyprší časový limit relace. Nebo může odkazovat na problémy na databázovém serveru po navázání připojení. K tomu může dojít kdykoli během životnosti připojení klienta. Může to znamenat, že databáze měla závažný problém. |
CHYBA 1040 Příliš mnoho připojení | Počet připojených databázových klientů je již na nakonfigurované maximálním počtu. Je potřeba vyhodnotit, proč je pro databázi vytvořeno tolik připojení. |
CHYBA 1045 Přístup odepřen pro uživatele | Klient zadal nesprávné uživatelské jméno nebo heslo, takže databáze odepřela přístup. |
CHYBA 2006 Server MySQL se odpojil | Podobně jako CHYBA 2013 Ztráta připojení k serveru MySQL v předchozí tabulce. |
CHYBA 1317 Spuštění dotazu bylo přerušeno | Chyba, kterou klient obdrží, když primární uživatel ukončí dotaz, nikoliv připojení. |
CHYBA 1129 Hostitel 1.2.3.4 je blokován kvůli mnoha chybám připojení | Odblokování pomocí nástroje mysqladmin flush-hosts – všichni klienti v jednom počítači se zablokují, pokud se jeden klient tohoto počítače několikrát pokusí použít nesprávný protokol pro připojení k MySQL (jedním z příkladů je telneting k portu MySQL). Jak uvádí chybová zpráva, uživatel správce databáze musí problém vymazat FLUSH HOSTS; . |
Poznámka:
Další informace o chybách připojení najdete v blogovém příspěvku Prošetřování problémů s připojením flexibilního serveru Azure Database for MySQL.