Помилка підключення до бази даних 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> SHOW GLOBAL STATUS LIKE 'Aborted_connects';
+ ------------------ + ------- +
| Ім'я змінної | Значення |
+ ------------------ + ------- +
| Aborted_connects | 2540 |
+ ------------------ + ------- +

Я збільшив час очікування з 5 до 15 сек:

mysql> показувати змінні типу "connect_timeout";
+ ----------------- + ------- +
| Ім'я змінної | Значення |
+ ----------------- + ------- +
| connect_timeout | 15 |
+ ----------------- + ------- +

але це не допомогло. Будь-які пропозиції, як це налагодити? Це робить взаємодія бази даних жахливо повільною, коли в середньому доводиться намагатися підключитися 5 разів, перш ніж вона працює.

Я ще не намагався тримати зв’язок відкритим протягом усього життя програми, було б краще? Як запобігти закриттю з'єднання?

Якщо це допомагає комп'ютеру з проблемами, це 32-бітний Windows 7, тоді як сервер mysql знаходиться на Debian Linux.


Я знаю, що це лише пов'язка, але в URL-адресі звіту про помилку вказується: "Я вирішував проблему, збільшуючи глобальну змінну connect_timeout до 30 секунд". Ви хочете спробувати більш високе значення?
JoseK

1
Холодний комфорт, але це добре написане питання. Чудово дотримуючись статті Еріка С. Реймонда ... +1 вам і удачі.
gWaldo

@JoseK Звичайно, я можу спробувати, але я сумніваюся, що це призведе до значної зміни, оскільки я не побачив покращення, збільшившись з 5 до 15.
Zitrax

Це одна із змінних, яка не встановлює обмеження, якщо значення встановлено у 0?
pjmorse

1
Ви впевнені, що між машинами не виникає проблеми з підключенням, можливо, проблема з мережею?
Warner

Відповіді:


2

Переглядаючи всі відомості про помилку, звіти, я підозрюю, що тут є проблема мережі або клієнта. Щось або пошкоджує, або додає занадто багато затримок до даних mysql.

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

Якщо ви все-таки керуєте трасуванням за допомогою проводки, будь ласка, вставте посилання та поставте посилання так, як ми б хотіли виглядати, як я думаю.


Що ви маєте на увазі під "здається, що це 64-бітне питання"? Це 32-розрядна установка. І вибачте, що я згадав Vista, це Win7, опис виправлено.
Zitrax

Я не дуже знайомий з налагодженням проводів. Але деякі речі мені здаються дивними, є кілька помічених пакетів RST та ретрансляція TCP, і час деяких пакетів негативний, як -257,3 секунди.
Zitrax

чи можете ви взагалі використовувати інший комутатор і повторно перевірити будь-ласка. різні зробити, якщо у вас є? якщо ви зможете
вставити патрон

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.