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.