连接池性能测试技术选型(JDBC,hikari,c3p0,DRUID)
一、测试方式
使用Junit直接调用service层代码,确保测试结果不受web容器影响.每个测试项目连续测试3次,取中间值作为测试结果.
二、与springboot集成
Tomcat JDBC
hikari
C3P0
Springboot与C3P0之间均没有提供相互支持,需要自行实现配置才能启用,且C3P0最后一个版本发布时间为2015年,可能已经停止维护了.
DRUID
Druid提供druid-spring-boot-starter对Springboot无缝对接
三、测试结果
项目初始化
单次查询
连续1000次查询
连续5000次查询
100个线程并发查询10次
100个线程并发查询100次
1000个线程并发查询10次
1000个线程并发查询100次
5000个线程并发查询10次
10000个线程并发查询10次
5个进程分别1000个线程并发查询10次
100个线程并发通过feign调用10次(5个服务)(数据波动较大)
100个线程并发通过feign调用100次(5个服务) (数据波动较大)
1000个线程并发通过feign调用10次(5个服务) (数据波动较大)
线程数达到2000时,feign服务报错
四、初步结论
dbcp2在线程数量较高时直接卡死,且性能最差
tomcat jdbc在5个进程分别使用20个连接时,其中四个进程报错
c3p0在线程数量达到5000时性能下降严重
druid在5个进程分别使用25个连接时,其中2~3个进程报错
hikari性能均保持前列,在5个进程分别使用50个连接,无异常,初步建议使用hikari连接池
五、完
分享以上测试数据,希望能为你的技术选型提供到帮助。