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


9

Моему приложению нужно довольно часто подключаться к базе данных 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> ПОКАЗАТЬ ГЛОБАЛЬНОЕ СОСТОЯНИЕ, КАК 'Aborted_connects';
+ ------------------ + ------- +
| Переменное_имя | Значение |
+ ------------------ + ------- +
| Aborted_connects | 2540 |
+ ------------------ + ------- +

Я увеличил время ожидания с 5 до 15 секунд:

mysql> показывать переменные типа 'connect_timeout';
+ ----------------- + ------- +
| Переменное_имя | Значение |
+ ----------------- + ------- +
| connect_timeout | 15 |
+ ----------------- + ------- +

но это не помогло. Любые предложения, как отладить это? Это делает взаимодействие с базой данных ужасно медленным, когда в среднем приходится пытаться подключиться 5 раз, прежде чем оно заработает.

Я еще не пытался держать соединение открытым в течение всего срока службы приложения, было бы лучше? Как я могу предотвратить закрытие соединения?

Если это помогает компьютеру с проблемами, то Windows 7 32-разрядная, в то время как сервер MySQL находится на Debian Linux.


Я знаю, что это только повязка, но в URL-адресе отчета об ошибке говорится: «Я обошел проблему, увеличив глобальную переменную connect_timeout до 30 секунд». Хотите попробовать более высокое значение?
JoseK

1
Холодный комфорт, но это хорошо написанный вопрос. Отличное следование статье Эрика С. Рэймонда ... +1 тебе и удачи.
gWaldo 19.10.10

@JoseK, конечно, я могу попробовать, но я сомневаюсь, что это будет иметь большое значение, так как я не увидел улучшения, увеличившись с 5 до 15.
Zitrax 19.10.10

Это одна из переменных, которая не устанавливает ограничений, если значение установлено в 0?
pjmorse 19.10.10

1
Вы уверены, что между компьютерами нет проблем с подключением, возможно, проблема с сетью?
Уорнер

Ответы:


2

Просматривая все подробности ошибки, я подозреваю, что здесь есть проблема со стороны сети или клиента. Что-то либо портит, либо добавляет слишком много задержки к данным mysql.

В чистой сети выполните трассировку проволочной акулы и проверьте, на что похож разговор. Убедитесь, что нигде не происходит формирование трафика. Похоже только на 64-битную проблему, поэтому проверьте 32-битную сборку, чтобы убедиться, что это та же проблема. Установите флажок Windows XP - M $ сделал несколько интересных вещей для сетевого стека в Vista, что сделало его отстойным! У нас нет конца сетевых проблем с машинами Vista и Win7!

Если вы управляете трассировкой проволочной акулы, вставьте ссылку и разместите ссылку, как нам всем хотелось бы посмотреть.


Что вы имеете в виду под «похоже на 64-битную проблему»? Это 32-битная установка. И извините, я упомянул Vista, это Win7, описание исправлено.
Цитракс

Я не очень знаком в отладке с Wireshark. Но некоторые вещи кажутся мне странными, есть несколько RST-пакетов с перемаркировкой и ретрансмиссия TCP, а время некоторых из некоторых пакетов является отрицательным, например -257,3 секунды.
Цитракс

Можете ли вы использовать другой переключатель вообще и перепроверьте, пожалуйста. отличается, если у вас есть один? если бы вы могли вставить или застегнуть молнию и сделать свалку из
проволочной акулы

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.