Мое приложение должно довольно часто подключаться к базе данных mysql на другом компьютере. Однако я получаю частые ошибки при подключении; Обычно я могу подключиться, но после многих попыток. Я получаю следующее сообщение об ошибке:
Mysql.mysql(): Couldn't connect to SQL-server: Lost connection to MySQL server at 'reading authorization packet', system error: 2
Я прочитал информацию здесь: http://dev.mysql.com/doc/refman/5.0/en/error-lost-connection.html а также комментарии к ошибке http://bugs.mysql.com/bug.php?id=28359.
Как видите, существует множество прерванных соединений:
mysql> SHOW GLOBAL STATUS LIKE 'Aborted_connects'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | Aborted_connects | 2540 | +------------------+-------+
Я увеличил таймаут с 5 до 15 сек:
mysql> show variables like 'connect_timeout'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | connect_timeout | 15 | +-----------------+-------+
но это не помогло. Есть предложения, как это отладить? Это делает взаимодействие с базой данных ужасно медленным, когда ей в среднем приходится пытаться подключиться 5 раз, прежде чем она заработает.
Я еще не пробовал поддерживать соединение открытым в течение всего срока службы приложения, что будет лучше? Как предотвратить закрытие соединения?
Если это помогает компьютеру с проблемами, это 32-разрядная версия Windows 7, а сервер mysql - на Debian Linux.
В конце концов, это оказалось из-за общей проблемы с сетью на машине. Решение было найдено в: Проблемы с производительностью сети в Windows 7
Просматривая все подробности об ошибках и отчеты, я подозреваю, что здесь есть проблема с сетью или на стороне клиента. Что-то либо повреждает данные mysql, либо увеличивает их задержку.
В чистой сети выполните трассировку wirehark и проверьте, на что похож разговор. Убедитесь, что нигде не происходит формирование трафика. Похоже на 64-битную проблему, поэтому проверьте 32-битную сборку, чтобы убедиться, что это та же проблема. Проверьте коробку с Windows XP - M $ сделал несколько забавных вещей с сетевым стеком на Vista, что сделало его отстойным временем! У нас бесконечные проблемы с сетью на машинах Vista и Win7!
Если вы все-таки управляете трассировкой wirehark, пожалуйста, вставьте bin и разместите ссылку, как я думаю, всем нам хотелось бы выглядеть.