MySql * совершенно случайно * Невозможно подключиться к любому из указанных хостов MySQL - PullRequest
5 голосов
/ 21 февраля 2012

Этот убивает меня. У нас есть приложение ASP.NET/Mono в базе данных MySQL. В течение нескольких месяцев мы страдали от совершенно случайного, но последовательного появления «Невозможно подключиться к любому из указанных хостов MySQL». Я ни в коем случае не профессионал в MySQL, и я надеюсь, что это что-то глупое.

Особенности:
MySQL 5.5.17
MySQL, Connector / Net 6.4.4
Mono 2.10.8
MonoDevelop 2.8.6.5

Строка подключения: SERVER = localhost, 3306; DATABASE = xxx; UID = xxx; PWD = xxx; TIMEOUT СОЕДИНЕНИЯ = 90; Encrypt = false;

Для Max_connections установлено значение 150. Никогда не должно быть более 5 соединений, и все они активны (возможно, из-за объединения).

  • Приложение C # ASP.NET 3.5. На Windows / IIS годами работает как скала годами. Девять месяцев назад наш рынок побудил нас отказаться от Windows, поэтому мы (легко можно добавить) перенесли все это в Mono / Apache.

  • Эта проблема возникает только на стороне Mono, но это очень важно, поскольку мы прекратили поддержку Windows.

  • Происходит в среднем около 10 раз в час, но расстояние сильно варьируется.

  • Проблема наблюдалась в следующих конфигурациях:

Ubuntu 11 / Apache2 / mod_mono
OSX Lion / Apacke2 / mod_mono
Ubuntu 11 / xsp2 / MonoDevelop отладочный сервер
Сервер отладки OSX Lion / xsp2 / MonoDevelop

  • Перепутали с keepalive, wait_timeout, connectionreset и т. Д. Безрезультатно. Сроки, кажется, не имеют никакого эффекта. Ошибка происходит мгновенно в conn.open - не после истечения времени ожидания соединения.

  • Вот подсказка - приложение не будет работать с Pooling = false. Почти каждая попытка подключения терпит неудачу. Конечно, я хочу объединиться, но я не уверен, почему это не сработало бы.

  • Приложение имеет встроенное «сердцебиение» (сеанс пользователя в базе данных) - каждые 2 минуты.

  • Самый сводящий с ума из всех? Это абсолютно невозможно воспроизвести по требованию в рабочей среде - это случайно. Я проверил размеры запросов, время выполнения и т. Д.

  • Только в одном сценарии я могу это осуществить: при первом запуске сервера Ubuntu или OSX, самый первый раз, когда Mono устанавливает свое первое соединение с MySQL - это произойдет тогда. После этого можно только догадываться.

1 Ответ

0 голосов
/ 29 августа 2014

Хорошо, это старо, но я потерял так много времени на этом, я должен поделиться этой спасительной статьей, которую я наконец-то нашел: Как Mono и Mysql хорошо играть вместе

И я подвожу итог, когда ссылка когда-нибудь закончится на 404: ДОЛЖНА быть определена КАЖДАЯ переменная строки соединения. Итак, да, это включает в себя порт , который мне никогда не приходилось определять в строке подключения когда-либо в моей жизни прежде.

Для меня это решило проблему.

...