Moja aplikacja musi dość często łączyć się z bazą danych mysql na innym komputerze. Jednak często pojawiają się błędy przy połączeniu; Zwykle mogę się ostatecznie połączyć, ale po wielu próbach. Otrzymuję komunikat o błędzie:
Mysql.mysql(): Couldn't connect to SQL-server: Lost connection to MySQL server at 'reading authorization packet', system error: 2
Przeczytałem informacje tutaj: http://dev.mysql.com/doc/refman/5.0/en/error-lost-connection.html, a także komentarze do błędu http://bugs.mysql.com/bug .php? id = 28359 .
Jak widać, istnieje wiele przerwanych połączeń:
mysql> POKAŻ GLOBALNY STATUS PODOBNY DO 'Aborted_connects'; + ------------------ + ------- + | Zmienna nazwa | Wartość | + ------------------ + ------- + | Aborted_connects | 2540 | + ------------------ + ------- +
Wydłużyłem limit czasu z 5 do 15 sekund:
mysql> pokaż zmienne takie jak „connect_timeout”; + ----------------- + ------- + | Zmienna nazwa | Wartość | + ----------------- + ------- + | connect_timeout | 15 | + ----------------- + ------- +
ale to nie pomogło. Wszelkie sugestie, jak to debugować? Powoduje to, że interakcja z bazą danych jest strasznie powolna, gdy średnio trzeba spróbować połączyć się 5 razy, zanim zadziała.
Nie próbowałem jeszcze utrzymywać połączenia otwartego przez cały okres użytkowania aplikacji, czy byłoby lepiej? Jak zapobiec zamykaniu połączenia?
Jeśli to pomaga komputerowi z problemami, jest Windows 7 w wersji 32-bitowej, podczas gdy serwer mysql działa w systemie Debian Linux.
źródło
Odpowiedzi:
Przeglądając wszystkie szczegóły błędu i raporty, które podejrzewam, że występuje tutaj problem związany z siecią lub klientem. Coś psuje lub dodaje zbyt duże opóźnienie do danych mysql.
W czystej sieci wykonaj śledzenie wireshark i sprawdź, jak wygląda rozmowa. Upewnij się, że nigdzie nie odbywa się kształtowanie ruchu. Wydaje się, że to problem tylko 64-bitowy, więc sprawdź wersję 32-bitową, aby upewnić się, że jest to ten sam problem. Zaznacz pole Windows XP - M $ zrobił kilka fajnych rzeczy do stosu sieciowego na Vistę, co spowodowało, że było to trochę do bani! Nie mamy końca problemów z siecią z maszynami Vista i Win7!
Jeśli zarządzasz śledzeniem wireshark, wklej i wklej link, jak wszyscy chcielibyśmy wyglądać.
źródło
Ostatecznie stało się tak z powodu ogólnego problemu z siecią na maszynie. Rozwiązanie znaleziono w: Problemy z wydajnością sieci w systemie Windows 7
źródło