Недавно я переключился с пула соединений Apache DBCP на C3P0 и прошел через мои журналы, чтобы увидеть, что есть проблемы с таймаутом соединения. Раньше у меня этого не было с DBCP и Tomcat, поэтому мне интересно, проблема с конфигурацией или проблема с драйвером.
Всякий раз, когда я загружаю страницу после того, как сервер некоторое время простаивал, я увижу, что некоторый контент не отправляется (поскольку сервер не может получить соединение или что-то еще). Когда я обновляю страницу, все содержимое есть.
Кто-нибудь рекомендует использовать пул соединений MySQL, поскольку я все равно использую MySQL? Каков ваш опыт в пуле соединений MySQL?
Вальтер
Если база данных, с которой вы работаете, настроена на таймаут соединений после определенного времени бездействия, они уже закрыты и, следовательно, непригодны для использования, когда они заимствованы из пула.
Если вы не можете или не хотите перенастраивать свой сервер базы данных, вы можете настроить C3P0 (и большинство других пулов подключений) для проверки соединений с тестовым запросом, когда они заимствованы из пула. Вы можете найти более подробную информацию в соответствующий раздел документации C3P0.
Edit: Конечно, вы правы, также возможно, что в пуле DBCP было настроено максимальное время простоя, из-за чего их удаляли из пула, прежде чем они перейдут в режим ожидания. В любом случае, используя либо тестовый запрос, либо убедитесь, что соединения удалены из пула, прежде чем они закроют время, устраните проблему.
Просто добавьте ссылку на другой пул соединений; BoneCP (http://jolbox.com); пул соединений, который быстрее, чем C3P0, а также DBCP.
Как и C3P0 и DBCP, убедитесь, что вы настроили тестирование бездействия, чтобы избежать описанного вами сценария (возможно, установка MySQL wait_timeout начинается, обычно устанавливается на 8 часов).