c3p0,dbcp2,druid,hikari数据源对比

article/2025/9/26 2:56:05

c3p0,dbcp2,druid,hikari数据源对比

说明
本次测试c3p0采用版本为0.9.5.2,dbcp2采用版本为2.1.1,druid数据源采用版本为:1.1.10,hikari数据源为2.7.9,数据库均采用oracle数据库。

单线程循环多次调用测试(数据库10000条数据)

测试前置条件

1.数据源配置初始化数据库连接为5,最大数据库连接数为20。
2.采用单线程请求调用,在控制层对服务层进行循环调用,统计样本数10个。
3.数据库数据量为10000条。

测试结果

在这里插入图片描述
在这里插入图片描述

二、多线程并发单次调用测试(10000条数据)

测试前置条件

1.数据源配置为初始化数据库连接为5,最大数据库连接数为20。
2.采用多线程并发(秒级并发量),共测试10次,记录:平均值,中位数,95%请求耗时,最大耗时和请求超时/错误率。
3.结果采用jmeter通过http请求相应时间来进行记录。
4.数据库数据量为10000条。

测试结果

在这里插入图片描述
在这里插入图片描述

结论

从结果上来看,c3p0对于多线程的数据调用支持较差,延时较高,dbcp2和druid对多线程并发调用支持较好;在5000的并发量时,druid的请求超时率较低,性能较好;在10000的并发量时,请求超时和错误率都较高,初步判断是电脑性能导致;

三、多线程并发调用多个微服务

测试前置条件

1.数据源配置为初始化数据库连接为5,最大数据库连接数为20。
2.服务为起5个springboot微服务,连接同一个数据库实例。
3.采用多线程并发,同时对5个服务进行调用,共测试10次,记录:平均值,中位数,95%请求耗时,最大耗时和请求超时/错误率。
4.结果采用jmeter通过http请求相应时间来进行记录。
5.数据库数据量为10条。

测试结果

在这里插入图片描述
在这里插入图片描述

四、多线程并发调用多个微服务(10000条)

测试前置条件

1.数据源配置为初始化数据库连接为5,最大数据库连接数为20。
2.服务为起5个springboot微服务,连接同一个数据库实例。
3.采用多线程并发,同时对5个服务进行调用,共测试10次,记录:平均值,中位数,95%请求耗时,最大耗时和请求超时/错误率。
4.结果采用jmeter通过http请求相应时间来进行记录。
5.数据库数据量为10000条。

测试结果

在这里插入图片描述
在这里插入图片描述

五、多线程并发通过feign调用微服务

测试前置条件

1.数据源配置为初始化数据库连接为5,最大数据库连接数为20。
2.服务为一个eureka注册中心,4个eureka服务实例,一个feign客户端
3.采用多线程并发,对feign客户端进行调用
4.记录请求耗时,最大耗时和请求超时/错误率。
5.结果采用jmeter通过http请求相应时间来进行记录。
6.数据库数据为10000条。
7.在10*500时错误率很高,应该是电脑性能所致,故3个数据源未进行测试。

测试结果

在这里插入图片描述
在这里插入图片描述

分享以上测试结果,希望能帮大家做出选择。


http://chatgpt.dhexx.cn/article/S7xuADNG.shtml

相关文章

Hikari连接池——java.lang.Exception: Apparent connection leak detected

Hikari连接池——java.lang.Exception: Apparent connection leak detected 问题分析总结 问题分析 首先,先看报错: java.lang.Exception: Apparent connection leak detectedat com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.j…

ERROR com.zaxxer.hikari.pool.HikariPool - HikariPool-1 - Exception during pool initialization.

错误截图(截取一部分): 解决方法:去网上查看发现需要加useSSLfalse,在后面拼接上。这个的意思是禁用SSL。 上代码: spring.datasource.urljdbc:mysql://localhost:3306/springdd?serverTimezoneAsia/Sha…

mysql hikari连接池异常处理(com.zaxxer.hikari.pool.ProxyConnection)

异常信息如下:com.mysql.cj.jdbc.exceptions.CommunicationsException: The last packet successfully received from the server was 603,312 milliseconds ago. ### Error updating database. Cause: com.mysql.cj.jdbc.exceptions.CommunicationsException: T…

Hikari连接泄露分析:Apparent connection leak detected

Hikari连接池故障 前两天生产环境上触发了触发了CPU飙升的预警短信,查看日志发现出现如下数据库连接池的报错,通过网上查阅资料发现HikariCP连接泄露时就会抛出此异常。 故障分析 Hikari的相关配置 leak-detection-threshold:用来设置连接…

springboot实现多数据源配置(Druid/Hikari)

使用springbootmybatis-plus(Druid/Hikari)实现多数据源配置 操作步骤: 引入相应的maven坐标编写mybatis配置,集成mybatis或mybatis-plus(如果已集成可跳过)编写数据源配置类编写注解,并通过a…

HikariDataSource

DataSourceConfiguration 配置类,springBoot默认采用HikariDataSource /*** Hikari DataSource configuration.*/Configuration(proxyBeanMethods false)ConditionalOnClass(HikariDataSource.class)ConditionalOnMissingBean(DataSource.class)ConditionalOnPro…

Hikari

HikariCP 1 简介 数据库连接池就是在程序初始化的时候,预先创建一定数量的数据库连接对象,当后续需要数据库连接的时候,如果此时有连接未被使用,那么他就可以直接使用已经创建好的连接,不需要再重新创建新的连接&…

关于Hikari连接池的源码理解与配置使用

关于Hikari连接池的源码理解与配置使用 1. 连接池初始化 1.1 初始化连接池 对于应用者来说,我们构造一个线程池就是构造一个HikariDataSource。 重点看一下获取连接以及相关连接管理的流程。 public Connection getConnection() throws SQLException {if (this…

Hikari 讲解

前言 现在已经有很多公司在使用HikariCP了,HikariCP还成为了SpringBoot默认的连接池,伴随着SpringBoot和微服务,HikariCP 必将迎来广泛的普及。 下面带大家从源码角度分析一下HikariCP为什么能够被Spring Boot 青睐,文章目录如下…

SpringBoot系列十八:整合Hikari

Hikari是一款非常强大,高效,并且号称“史上最快连接池”。并且在springboot2.0之后,采用的默认数据库连接池就是Hikari。不需要引入依赖,已经在SpringBoot中包含了。  GitHub地址:https://github.com/brettwooldridge…

Android开发之RelativeLayout

文章目录 常见属性根据父容器定位根据兄弟容器定位 实例根据父容器定位根据兄弟组件定位 通用属性设置组件与父容器的边距设置父容器与组件的边距 常见属性 根据父容器定位 layout_alignParentStart 左对齐 layout_alignParentEnd 右对齐 layout_alignParentTop 顶部对齐 lay…

Android RelativeLayout布局

1. RelativeLayout类 相对布局(RelativeLayout)将子视图以相对位置显示。默认显示在父视图的左上角。 layout_alignParentTop,父视图的上边layout_alignParentBottom,父视图的下边layout_alignParentLeft,父视图的左…

android 继承relativelayout,Android开发中RelativeLayout相对布局

Android开发中RelativeLayout相对布局 RelativeLayout布局是Android界面布局中应用最广也最强大的一种布局,其不只十分灵活,能够解决开发中各类界面布局需求,同时也很方便了解决了多屏幕尺寸的适配问题。在iOS开发中,Autolayout技…

RelativeLayout实现居中偏下x距离引发的小问题

UE想实现一个简单的效果,某个控件在屏幕水平线下方50dp。由于受限于项目历史布局(RelativeLayout)和一套动态化设置控件位置的方案,竟然遇到了一点问题。(在这里还是喊一声:ConstraintLayout最香&#xff0…

RelativeLayout布局

RelativeLayout布局是相对布局,如果RelativeLayout中再包含两个RelativeLayout,不会像LinearLayout一样,宽高一样的话会重叠在一起 将红色布局放到右上角 常见属性 根据父容器定位 layout_alignParentLeft 左对齐 layout_alignParentRig…

RelativeLayout圆角处理

RelativeLayout圆角处理以后,可以变相对子view进行圆角处理,如ImageView,VideoView等 RoundRelativeLayout具体实现 比较简单,只需要在初始化时设置一下layout的ViewOutlineProvider,方便起见,这里写死rad…

RelativeLayout(相对布局)的基本使用

RelativeLayout又称作相对布局,也是一种非常常用的布局。和LinearLayout的排列规则不同,RelativeLayout显得更加随意一些,它可以通过相对定位的方式让控件出现在布局的任何位置。也正因为如此,RelativeLayout中的属性非常多&#…

RelativeLayout相对布局详解

RelativeLayout相对布局在Android UI开发中也应用比较多,虽然它不及LinearLayout使用方便,但某些场景中使用RelativeLayout也是一种很不错的选择。在官网上介绍RelativeLayout是一个视图组,在相对位置显示子视图。RelativeLayout是用于设计用…

Android相对布局(RelativeLayout)

Android相对布局(RelativeLayout) 备注:这里的视图和元素是等同的概念。 RelativeLayout是一个允许子视图相对于其他兄弟视图或是父视图显示的视图组(通过ID指定)。每个视图的位置能够指定它相对于兄弟(比如在其他视图的左边或是下边)或是父视图(这里是指相对布局容…

【Android】相对布局(RelativeLayout)最全解析

【Android】相对布局(RelativeLayout)最全解析 一、相对布局(RelativeLayout)概述二、根据父容器定位三、根据兄弟控件定位 一、相对布局(RelativeLayout)概述 相对布局(RelativeLayout&#x…