1. 开篇闲谈
基本上来说,大部分项目都需要跟数据库做交互,那么,数据库连接池的大小设置成多大合适呢?
一些开发老鸟可能还会告诉你:没关系,尽量设置的大些,比如设置成 200,这样数据库性能会高些,吞吐量也会大些!
的确如此,每次看到application.properties配置数据库连接池的时候,总是想要不再搞大一点连接数。
#整它个2000试试
spring.datasource.hikari.minimum-idle=2000
spring.datasource.hikari.maximum-pool-size=2000
然后发现,业务页面点点 也没啥区别,看看数据库的连接数的确上去了,但是发现大部分都在sleep:
1.png
2. 试验
探索真理的捷径莫过于动手,搞个demo,ab压测下看看,到底线程池连接数对请求响应会不会产生大影响。
2.1. 环境准备
一般mysql最大连接数比较少,提前设置下最大连接数
SET GLOBAL max_connections=2100
构建项目,新建Spring-boot web项目,添加如下Pom依赖
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat
org.springframework.boot
spring-boot-starter-undertow
mysql
mysql-connector-java
runtime
io.dropwizard.metrics
metrics-core
4.1.0
排除tomcat内嵌服务器,改用undertow,避免内嵌服务器性能影响。
配置数据库和连接池,采用牛逼的一匹的号称世界最快连接池:hikariCP
# 数据库连接配置
spring.datasource.driver-cl