Spring Boot连接池的最大大小允许的连接数量超过了应有的数量

时间:2019-04-09 17:15:25

标签: spring-boot jmeter database-connection connection-pooling hikaricp

我已经在Spring Boot 2.0应用程序中将最大池大小配置为10(我正在使用Hikari连接池)。我正在使用JMeter测试我的REST API。我正在尝试模拟500个并发用户(线程组->线程属性->线程数(用户):500)。我希望第20个请求后测试失败,但是我的JMeter测试运行正常。

spring.datasource.hikari.minimumIdle: 10
spring.datasource.hikari.maximumPoolSize: 10
spring.datasource.hikari.connectionTimeout: 30000
spring.datasource.hikari.idleTimeout: 600000
spring.datasource.hikari.maxLifetime: 1800000
spring.datasource.hikari.connectionInitSql: SELECT 1 FROM DUAL

pom.xml

    <dependency>
        <groupId>com.oracle.jdbc</groupId>
        <artifactId>ojdbc7</artifactId>
        <version>12.1.0.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
  1. 即使以为我有maximumPoolSize 10,我也可以同时建立500个连接。为什么允许?
  2. 我的Hikari连接池设置是否错误?即我是否需要通过在pom.xml中排除它来禁用tomcat连接池(我相信在Spring 2.0中不需要)

1 个答案:

答案 0 :(得分:0)

并发用户数是同时到达服务器的潜在请求数。请注意,它可能位于“关于”页面(静态页面)上,因此根本不会访问/影响数据库。

即使当请求到达数据库时,如果池已达到最大活动连接,则池仍在等待连接(在您的情况下),最多30秒,这在实时数据库事务方面很长。

如何设置数据源很复杂,但是总的来说您的设置是正确的,您只是在比较不同的指标。