性能文章>注意:两个会导致druid性能下降10倍的参数>

注意:两个会导致druid性能下降10倍的参数原创

2年前
9544314

druid:阿里巴巴开源的为监控而生的数据库连接池。你看,官方都没有说是高性能数据库连接池,因为,在性能方面,HikariCP会说:我不是针对谁,论性能,在坐的各个数据库连接池都是渣渣。Github HikariCP的介绍:A solid, high-performance, JDBC connection pool at last。而且HikariCP还是springboot2.x以后默认的数据库连接池。

HikariCP性能参考–图片来自于HikariCP Github主页:

image.png

ConCycle就是指DataSource.getConnection()、Connection.close()。而StatementCycle就是指Connection.prepareStatement()、Statement.execute()、Statement.close()。需要说明的是HikariCP Github没有给出和druid的对比,不过,也有网友对这两个中间件进行了压测比较,只对比性能的前提下,HikariCP还是要好不少的。

不过,即使druid的性能不是最好的,还是有很多项目组或者公司选择druid。因为,它的监控非常非常完善。我们项目组也不例外,用的是druid。

可能很多项目的很多中间件的配置,都不是非常合理,没有经过充分的压测。比如Redis相关,数据库相关,MQ相关等。笔者的这个使用druid的项目也不例外,笔者今天介绍4个你可能不怎么关注的参数:

  • validationQuery

用来检测连接是否有效的sql,如果validationQuery为空,那么testOnBorrow、testOnReturn、testWhileIdle这三个参数都不会起作用,因为这三个参数都是通过执行参数validationQuery指定的SQL来验证数据库连接的有效性,配置参考:validationQuery=SELECT 1

  • testWhileIdle

建议配置为true。对性能影响很小,因为是定期检查。如果连接空闲时间大于timeBetweenEvictionRunsMillis指定的毫秒,就会执行参数validationQuery指定的SQL来检测连接是否有效。

  • testOnBorrow

建议配置为false。获取连接时执行validationQuery检测连接是否有效,这个配置会降低性能。

  • testOnReturn

建议配置为false。归还连接时执行validationQuery检测连接是否有效,这个配置会降低性能。

如果这4个参数都是按照笔者建议进行配置,那么就不会有什么性能问题,但是。请看下面这张压测表格–testOnReturn和testOnBorrow不同值组合的情况下,5000次主键查询的耗时比较:

image.png

惊不惊喜,意不意外???

由这张压测结果表,我们可以得出如下结论:

  1. testOnReturn和testOnBorrow都为false时性能最好。

  2. 如果任意一个参数为true(另一个为false),会导致性能下降5倍多

  3. testOnReturn和testOnBorrow对性能的影响几乎一样(因为它们都会通过执行参数validationQuery指定的SQL来校验连接的有效性)。

事实上,这两个参数在druid中默认值就是false。所以,赶紧去检查你们的配置,是不是和笔者一样,多此一举的将它们配置为true。

点赞收藏
阿飞Javaer
请先登录,查看3条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步

为你推荐

线上问题排查,一不小心踩到阿里的 arthas坑了

线上问题排查,一不小心踩到阿里的 arthas坑了

【全网首发】一次想不到的 Bootstrap 类加载器带来的 Native 内存泄露分析

【全网首发】一次想不到的 Bootstrap 类加载器带来的 Native 内存泄露分析

解读JVM级别本地缓存Caffeine青出于蓝的要诀 —— 缘何会更强、如何去上手

解读JVM级别本地缓存Caffeine青出于蓝的要诀 —— 缘何会更强、如何去上手

【全网首发】一次疑似 JVM Native 内存泄露的问题分析

【全网首发】一次疑似 JVM Native 内存泄露的问题分析

解读JVM级别本地缓存Caffeine青出于蓝的要诀2 —— 弄清楚Caffeine的同步、异步回源方式

解读JVM级别本地缓存Caffeine青出于蓝的要诀2 —— 弄清楚Caffeine的同步、异步回源方式

【全网首发】从源码角度分析一次诡异的类被加载问题

【全网首发】从源码角度分析一次诡异的类被加载问题

14
3