Опции организации пула подключений с JDBC: DBCP по сравнению с C3P0

Вы используете службу обнаружения на порту 8061.
Но, согласно вашему employee-service.yml, клиенты eureka пытаются зарегистрироваться на
eureka.client.serviceUrl.defaultZone: http: // localhost: 8761 / eureka /

311
задан Bart Kiers 29 April 2011 в 00:01
поделиться

8 ответов

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

DBCP последовательно исключительные ситуации в наше тестовое приложение и изо всех сил пытались достигнуть уровней производительности, какой C3P0 был более, чем способен к обработке без любых исключений.

C3P0 также надежно обработал разъединения DB, и прозрачный снова соединяется на резюме, тогда как DBCP никогда не восстанавливал соединения, если ссылка была взята из под ним. Хуже все еще DBCP возвращала объекты Соединения приложению, для которого повредилась базовая передача.

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

ОБНОВЛЕНИЕ: оказывается, что после многих лет нахождения на полке, Apache люди палаты общин вынули DBCP из дремоты , и это - теперь, еще раз, активно разработанный проект. Таким образом мое исходное сообщение может устареть.

Однако я еще не испытал работу этой новой обновленной библиотеки, ни услышал о ней находиться де-факто в любой недавней платформе приложения, все же.

179
ответ дан j pimmel 23 November 2019 в 01:12
поделиться

Другая альтернатива, Proxool, упоминается в эта статья .

, которую Вы смогли узнавать, почему В спящем режиме пакеты c3p0 для ее реализации пула соединения по умолчанию?

7
ответ дан toolkit 23 November 2019 в 01:12
поделиться

При проблеме автоматического переподключения с DBCP кто-нибудь пытался использовать следующие 2 параметра конфигурации?

validationQuery="Some Query"

testOnBorrow=true
14
ответ дан 23 November 2019 в 01:12
поделиться

К сожалению, все они устарели. DBCP был немного обновлен недавно, двум другим 2-3 года, с множеством нерешенных ошибок.

7
ответ дан 23 November 2019 в 01:12
поделиться

Я приглашаю вас попробовать BoneCP - это бесплатно, с открытым исходным кодом и быстрее, чем доступные альтернативы (см. Раздел тестов).

Отказ от ответственности: I ' m автор, так что можно сказать, что я предвзят: -)

ОБНОВЛЕНИЕ: По состоянию на март 2010 года, все еще примерно на 35% быстрее, чем новый переписанный пул Apache DBCP ("tomcat jdbc"). См. Ссылку на динамический тест в разделе тестов.

Обновление №2: (декабрь 2013 г.) После 4 лет наверху появился гораздо более быстрый конкурент: https://github.com/brettwooldridge/HikariCP

Обновление №3: (сентябрь 2014 г.) Считайте, что BoneCP на данный момент устарел , рекомендуется перейти на HikariCP .

Обновление № 4: (апрель 2015 г.) - - Мне больше не принадлежит домен jolbox.com, но новый владелец сохранил старый контент, так что будьте осторожны.

176
ответ дан 23 November 2019 в 01:12
поделиться

Вот несколько статей, которые показывают, что DBCP имеет значительно более высокую производительность, чем C3P0 или Proxool. По моему собственному опыту, c3p0 имеет несколько хороших функций, таких как объединение подготовленных операторов, и более настраиваемый, чем DBCP, но DBCP явно быстрее в любой среде, в которой я его использовал.

Разница между dbcp и c3p0? Совершенно ничего! (Блог разработчиков Sakai) http://blogs.nyu.edu/blogs/nrm216/sakaidelic/2007/12/difference_between_dbcp_and_c3.html

См. Также аналогичные статьи JavaTech «Разбор пула соединений» в комментариях к сообщению в блоге.

8
ответ дан 23 November 2019 в 01:12
поделиться

Только что закончили, потратив полтора дня на DBCP. Несмотря на то, что я использую последнюю версию DBCP, я столкнулся с теми же проблемами, что и j pimmel . Я бы вообще не рекомендовал DBCP, особенно это умение выбрасывать соединения из пула, когда БД уходит, его неспособность повторно подключиться, когда БД возвращается, и его неспособность динамически добавлять объекты соединения обратно в пул (он навсегда зависает на сообщение о сокете ввода-вывода JDBCconnect)

Сейчас я переключаюсь на C3P0. Я использовал это в предыдущих проектах, и это работало и работало как шарм.

4
ответ дан 23 November 2019 в 01:12
поделиться

Хорошей альтернативой, которая проста в использовании, является DBPool .

«Утилита пула соединений с базой данных на основе Java, поддерживающая истечение срока действия, кэширование операторов, проверку соединения и простую настройку с помощью диспетчера пула».

http://www.snaq.net/java/DBPool /

3
ответ дан 23 November 2019 в 01:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: