本文主要是對這hikariCP,druid,tomcat-jdbc,dbcp,c3p0幾種鏈接池的詳細的功能和性能測試對比,經過此次測試對目前主流的一些鏈接池作一個全面的對比,從而給業務系統一個最佳的推薦。java
功能 | dbcp | druid | c3p0 | tomcat-jdbc | HikariCP |
---|---|---|---|---|---|
是否支持PSCache | 是 | 是 | 是 | 否 | 否 |
監控 | jmx | jmx/log/http | jmx,log | jmx | jmx |
擴展性 | 弱 | 好 | 弱 | 弱 | 弱 |
sql攔截及解析 | 無 | 支持 | 無 | 無 | 無 |
代碼 | 簡單 | 中等 | 複雜 | 簡單 | 簡單 |
更新時間 | 2018.1.13 | 2018.1.14 | 2017.5.4 | 2018.1.14 | |
特色 | 依賴於common-pool | 阿里開源,功能全面 | 歷史久遠,代碼邏輯複雜,且不易維護 | 優化力度大,功能簡單,起源於boneCP | |
鏈接池管理 | LinkedBlockingDeque | 數組 | FairBlockingQueue | threadlocal+CopyOnWriteArrayList | |
線程 | 1個線程(心跳) | 2個線程 | 4個 | 3個 |
線程的做用mysql
公司 | 數據庫鏈接池 |
---|---|
58同城 | 本身開發 |
滴滴 | druid dbcp |
知果果 | druid |
慧聰 | druid dbcp |
起步科技 | dbcp 和 druid |
亞信 | hikariCP |
惟品會 | dbcp,druid,c3p0(默認) |
CPU | Intel(R) Xeon(R) CPU E5-2430 v2 @ 2.50GHz,24core |
---|---|
msyql version | 5.5.46 |
tomcat-jdbc version | 8.0.28 |
HikariCP version | 2.4.3 |
c3p0 Version | 0.9.5-pre8 |
dbcpVersion | 2.0.1 |
druidVersion | 1.0.5 |
測試說明以下:sql
初始鏈接和最小鏈接均爲5,最大鏈接爲20。在borrow和return均不心跳檢測數據庫
其中打開關閉次數爲: 100w次數組
測試用例和mysql在同一臺機器上面,儘可能避免io的影響緩存
使用mock和鏈接mysql在不一樣線程併發下的響應時間tomcat
mock性能數據 (單位:ms)併發
鏈接池 | 5ms | 20ms | 50ms | 100ms |
---|---|---|---|---|
tomcat-jdbc | 442 | 447 | 1,013 | 1,264 |
c3p0 | 4,480 | 5,527 | 7,449 | 10,725 |
dbcp | 676 | 689 | 867 | 1,292 |
hikari | 38 | 33 | 38 | 30 |
druid | 291 | 293 | 562 | 985 |
mysql性能數據 (單位:ms)異步
鏈接池 | 5ms | 20ms | 50ms | 100ms |
---|---|---|---|---|
tomcat-jdbc | 436 | 453 | 1,033 | 1,291 |
c3p0 | 4,378 | 5,726 | 7,975 | 10,948 |
dbcp | 671 | 679 | 897 | 1,380 |
hikari | 96 | 82 | 87 | 78 |
druid | 304 | 424 | 690 | 1,130 |
測試結果:jvm
hikariCP性能分析:
測試說明:
測試數據:
鏈接池 | 5ms | 8ms | 20ms | 50ms | 100ms |
---|---|---|---|---|---|
tomcat-jdbc | 2,178 | 1,495 | 1,769 | 1,818 | 1,858 |
c3p0 | 3,237 | 3,451 | 4,488 | 5,994 | 7,906 |
dbcp | 2,816 | 1,935 | 2,097 | 2,243 | 2,280 |
hikari | 2,299 | 1,546 | 1,682 | 1,751 | 1,772 |
druid | 2,297 | 1,551 | 1,800 | 1,977 | 2,032 |
測試結果:
測試說明:
測試數據:
cache | 1,927 |
---|---|
not cache | 2,134 |
測試結果:
測試說明: