0

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

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

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

Walter

+0

укажите конфигурацию. – Bozho

ответ

3

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

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

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

+0

good point - Мне нужно будет увидеть, по умолчанию он установлен. Возможно, я пропустил настройку в c3p0, тогда как у меня был тайм-аут, установленный в dbcp. – 2009-12-07 20:27:38

+0

Я думаю, что произошло то, что я удалил параметры конфигурации из моего persistence.xml, который, как я думал, не использовался. Я не установил их в свой jetty-env.xml, поэтому, похоже, я удалил важную конфигурацию. – 2009-12-09 04:16:45

1

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

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

+0

Да, я наткнулся на это, не уверен, что я попробую. Я доволен C3P0 в целом, несмотря на то, что он не поддерживается. – 2009-12-09 04:17:19

+0

Посмотрите на бенчмарки, C3P0 отправляется с haywire при большой нагрузке на поток :-( – wwadge