Hibernate, C3P0, Mysql Connection Pooling - PullRequest
0 голосов
/ 07 декабря 2009

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

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

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

Walter

Ответы [ 2 ]

3 голосов
/ 07 декабря 2009

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

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

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

1 голос
/ 08 декабря 2009

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

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

...