spring-boot 中的 hikari cp 无法删除连接

问题描述 投票:0回答:0

我在 spring boot 中使用 hikaricp 作为默认连接池。但是,即使我指定了 50 个最大连接数,应用程序也无法获得连接,并且我运行了一个 jmeter 测试计划来运行 50 个线程。 我不断收到 504 网关超时错误。

我的 application.properties 有:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb?autoreconnect=true
spring.datasource.username=myuser
spring.datasource.password=mypassword
spring.datasource.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
logging.level.reactor.netty.http.client=DEBUG
spring.jackson.default-property-inclusion=NON_NULL
spring.datasource.hikari.data-source-properties.cachePrepStmts=true
spring.datasource.hikari.data-source-properties.prepStmtCacheSize=250
spring.datasource.hikari.data-source-properties.prepStmtCacheSqlLimit=2048
spring.datasource.hikari.data-source-properties.useServerPrepStmts=true
spring.datasource.hikari.data-source-properties.useLocalSessionState=true
spring.datasource.hikari.data-source-properties.rewriteBatchedStatements=true
spring.datasource.hikari.data-source-properties.cacheResultSetMetadata=true
spring.datasource.hikari.data-source-properties.cacheServerConfiguration=true
spring.datasource.hikari.data-source-properties.maintainTimeStats=false
spring.datasource.hikari.connection-timeout=60000
spring.datasource.hikari.maximum-pool-size=50
spring.datasource.hikari.minimum-idle=20
spring.datasource.hikari.auto-commit=true
spring.datasource.hikari.idle-timeout=300000
spring.jpa.open-in-view=false

我的代码说:

try {

            Connection con = dataSource.getConnection();

            PreparedStatement pstmt = con.prepareStatement(USER_CREDS_QUERY);
            pstmt.setString(1, username);
            ResultSet rst = pstmt.executeQuery();
            rst.next();
            user.setUsername(rst.getString(1));
            user.setPassword(rst.getString(2));
            user.setSalt(rst.getString(3));
            rst.close();
            pstmt.close();
            con.close();


        } catch (SQLException e) {
            // TODO Auto-generated catch block
            LOG.error("Error in findUser ", e.getMessage());
        }

我的 jmeter 测试计划有 线程数设置为 50启动时间设置为 15 秒.

当我将 最大池大小设置为 20,并且 请求 20 个线程 时,这很好用。

知道我哪里不见了吗?

MySQL 5.7
Spring Boot 2.7.9
HikariCP 4.0.3

谢谢

mysql spring-boot hikaricp
© www.soinside.com 2019 - 2024. All rights reserved.