Назад | Перейти на главную страницу

Ошибка подключения к базе данных mysql

Мое приложение должно довольно часто подключаться к базе данных 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 и разместите ссылку, как я думаю, всем нам хотелось бы выглядеть.