Мы получаем следующее сообщение об ошибке Coldfusion после того, как наш сервер проработал пару недель:
Ошибка при выполнении запроса к базе данных. Не удалось создать соединение с сервером базы данных. Попытка переподключиться 3 раза
Мы запускаем Coldfusion Enterprise 9 на сервере XServer годичной давности со Snow Leopard и MySQL 5. Сервер имеет около десяти DSN, настроенных в администраторе Coldfusion. Все локальные, с расширенными настройками по умолчанию, и хост установлен на «localhost». нагрузка.
Странно то, что после перезагрузки сервера все работает нормально. Затем примерно через неделю некоторые базы данных перестанут работать в том смысле, что Coldfusion не сможет установить с ними соединение. Если я затем перейду к администратору Coldfusion и нажму «Проверить все источники данных», я получу, что только 2 или 3 были проверены, остальные не прошли, и это всегда одни и те же источники данных, которые не могут быть проверены, когда сервер начинает вести себя так, если я попытаюсь подтвердить еще раз, НО НЕ ОБЯЗАТЕЛЬНЫ те же источники данных, которые не могли быть проверены в последний раз, когда сервер вел себя подобным образом.
Я знаю о настройке «max_connections», и мы включили строку для этой настройки в файл конфигурации MySQL и установили ее на 2000, и когда мы читаем ее по запросу, она говорит «2000», так что это не может быть проблемой .
В mysql_service.log нет никакой полезной информации. Мы также пытались очистить хосты, как я читал на одном форуме, чтобы проверить, не «забанил» ли сервер MySQL нашего пользователя, но безрезультатно.
Кто угодно?
если вы наберете «netstat -an | grep 3306» на сервере mysql, вы увидите много открытых сокетов («ESTABLISHED»), если это больше, чем количество сокетов, настроенных для открытия mysql, значит что-то блокируется и удерживая все дескрипторы пула базы данных.
это может быть проблема в mysql, но более вероятно, что это проблема приложения, не высвобождающего дескрипторы обратно в пул, аналогично утечке памяти.
Без дополнительной информации довольно сложно диагностировать проблему, но я бы начал с этого.