You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot+HikariCP连接Google Spanner出现会话泄漏问题求助

Spring Boot+HikariCP+Google Spanner会话泄漏问题

我有一个基于Spring Boot的应用,使用HikariCP连接Google Spanner数据库。目前遇到以下问题:

  • HikariCP的保活查询引发会话泄漏异常
  • 设置Leak Detection Threshold后应用直接崩溃
  • 业务逻辑中使用FluentJDBC执行的数据库查询也存在会话泄漏情况

异常栈信息

at com.google.cloud.spanner.SessionPool$PooledSessionFuture.markCheckedOut(SessionPool.java:1338)
    at com.google.cloud.spanner.SessionPool$PooledSessionFuture.access$6200(SessionPool.java:1317)
    at com.google.cloud.spanner.SessionPool.checkoutSession(SessionPool.java:3270)
    at com.google.cloud.spanner.SessionPool.getSession(SessionPool.java:3251)
    at com.google.cloud.spanner.SessionPool.getMultiplexedSessionWithFallback(SessionPool.java:3186)
    at com.google.cloud.spanner.DatabaseClientImpl.getMultiplexedSession(DatabaseClientImpl.java:72)
    at com.google.cloud.spanner.DatabaseClientImpl.singleUseReadOnlyTransaction(DatabaseClientImpl.java:182)
    at com.google.cloud.spanner.connection.SingleUseTransaction.executeQueryAsync(SingleUseTransaction.java:237)
    at com.google.cloud.spanner.connection.ConnectionImpl.internalExecuteQuery(ConnectionImpl.java:1592)
    at com.google.cloud.spanner.connection.ConnectionImpl.internalExecute(ConnectionImpl.java:1022)
    at com.google.cloud.spanner.connection.ConnectionImpl.execute(ConnectionImpl.java:1001)
    at com.google.cloud.spanner.jdbc.AbstractJdbcStatement.lambda$execute$3(AbstractJdbcStatement.java:290)
    at com.google.cloud.spanner.jdbc.AbstractJdbcStatement.doWithStatementTimeout(AbstractJdbcStatement.java:230)
    at com.google.cloud.spanner.jdbc.AbstractJdbcStatement.execute(AbstractJdbcStatement.java:289)
    at com.google.cloud.spanner.jdbc.JdbcStatement.executeStatement(JdbcStatement.java:257)
    at com.google.cloud.spanner.jdbc.JdbcStatement.execute(JdbcStatement.java:248)
    at com.zaxxer.hikari.pool.PoolBase.isConnectionDead(PoolBase.java:165)
    at com.zaxxer.hikari.pool.HikariPool$KeepaliveTask.run(HikariPool.java:854)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)

HikariCP配置代码

var sourceDbHikariConfig = new HikariConfig();

        sourceDbHikariConfig.setDriverClassName(config.getDriverClassName());
        sourceDbHikariConfig.setJdbcUrl(config.getUrl());
        sourceDbHikariConfig.setUsername(config.getUsername());
        sourceDbHikariConfig.setPassword(config.getPassword());
        sourceDbHikariConfig.setConnectionTestQuery(config.getConnectionTestQuery());
        sourceDbHikariConfig.setKeepaliveTime(config.getKeepAliveTime());
        sourceDbHikariConfig.setMaximumPoolSize(config.getMaxPoolSize());
        sourceDbHikariConfig.setMinimumIdle(config.getMinIdleTime());
        sourceDbHikariConfig.setConnectionTimeout(config.getConnectionTimeout());

        return new HikariDataSource(sourceDbHikariConfig);

POM依赖配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.myproject</groupId>
    <artifactId>my-project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>my-project</name>

    <properties>
        <java.version>21</java.version>
    </properties>

    <dependencies>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
        </dependency>

        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20231013</version>
        </dependency>

        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>5.1.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

        <dependency>
            <groupId>com.github.ulisesbocchio</groupId>
            <artifactId>jasypt-spring-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.9</version>
        </dependency>

        <dependency>
            <groupId>org.apache.httpcomponents.client5</groupId>
            <artifactId>httpclient5</artifactId>
            <version>5.3.1</version>
        </dependency>

        <dependency>
            <groupId>org.codejargon</groupId>
            <artifactId>fluentjdbc</artifactId>
            <version>1.8.6</version>
        </dependency>

        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-spanner-jdbc</artifactId>
            <version>2.13.0</version>
        </dependency>

        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-bigtable</artifactId>
        </dependency>

        <dependency>
            <groupId>com.github.javafaker</groupId>
            <artifactId>javafaker</artifactId>
            <version>0.14</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.testcontainers</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>1.19.4</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.15.1</version>
        </dependency>


    </dependencies>



    <dependencyManagement>

        <dependencies>

            <dependency>
                <groupId>com.google.cloud</groupId>
                <artifactId>libraries-bom</artifactId>
                <version>26.39.0</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

        </dependencies>

    </dependencyManagement>



    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

内容的提问来源于stack exchange,提问作者taimur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 11:40:56