Hibernate, C3P0, Mysql Connection Pooling

0

Недавно я переключился с пула соединений Apache DBCP на C3P0 и прошел через мои журналы, чтобы увидеть, что есть проблемы с таймаутом соединения. Раньше у меня этого не было с DBCP и Tomcat, поэтому мне интересно, проблема с конфигурацией или проблема с драйвером.

Всякий раз, когда я загружаю страницу после того, как сервер некоторое время простаивал, я увижу, что некоторый контент не отправляется (поскольку сервер не может получить соединение или что-то еще). Когда я обновляю страницу, все содержимое есть.

Кто-нибудь рекомендует использовать пул соединений MySQL, поскольку я все равно использую MySQL? Каков ваш опыт в пуле соединений MySQL?

Вальтер

  • 0
    предоставьте свою конфигурацию.
Теги:
hibernate
connection-pooling
c3p0
apache-commons-dbcp

2 ответа

3
Лучший ответ

Если база данных, с которой вы работаете, настроена на таймаут соединений после определенного времени бездействия, они уже закрыты и, следовательно, непригодны для использования, когда они заимствованы из пула.

Если вы не можете или не хотите перенастраивать свой сервер базы данных, вы можете настроить C3P0 (и большинство других пулов подключений) для проверки соединений с тестовым запросом, когда они заимствованы из пула. Вы можете найти более подробную информацию в соответствующий раздел документации C3P0.

Edit: Конечно, вы правы, также возможно, что в пуле DBCP было настроено максимальное время простоя, из-за чего их удаляли из пула, прежде чем они перейдут в режим ожидания. В любом случае, используя либо тестовый запрос, либо убедитесь, что соединения удалены из пула, прежде чем они закроют время, устраните проблему.

  • 0
    Хороший вопрос - мне нужно посмотреть, что он установлен по умолчанию. Возможно, я пропустил настройку в c3p0, тогда как в dbcp было установлено время ожидания.
  • 0
    Я думаю, что произошло то, что я удалил параметры конфигурации из моего файла persistence.xml, который, по моему мнению, не использовался. Я не установил их в своем файле jetty-env.xml, поэтому я удалил важную конфигурацию.
1

Просто добавьте ссылку на другой пул соединений; BoneCP (http://jolbox.com); пул соединений, который быстрее, чем C3P0, а также DBCP.

Как и C3P0 и DBCP, убедитесь, что вы настроили тестирование бездействия, чтобы избежать описанного вами сценария (возможно, установка MySQL wait_timeout начинается, обычно устанавливается на 8 часов).

  • 0
    Да, я наткнулся на это, не уверен, что я попробую. Я доволен C3P0 в целом, несмотря на то, что он не поддерживается.
  • 0
    Посмотрите на тесты, C3P0 выходит из строя под большой нагрузкой потока :-(

Ещё вопросы

Сообщество Overcoder
Наверх
Меню