Этот убивает меня. У нас есть приложение 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 - это произойдет тогда. После этого можно только догадываться.