spring jdbc hikari 连接池 - 不断登录和注销数据库

2023-12-03

我正在使用 spring boot data jpa 来连接到 Oracle 数据库。
Spring使用HikariCP对于 JDBC 连接,默认情况下创建大小为10的固定连接池.

问题是,在 Oracle 数据库日志中,它显示我的应用程序不断从数据库登录和注销。 IE。几乎每一秒都会有登录和注销请求。

Extract from the oracle log which shows constant logging on / off

90% 的登录/关闭发生在用户没有与应用程序交互的情况下,这就是我感到非常困惑的原因。这是一个问题,因为它在数据库上产生了大量开销。

这就是我为连接设置 bean 的方式:

@Repository
@Transactional(readOnly = true)
public interface OracleDao extends CrudRepository<MyOracleResource, Long> {

}

这些是application.properties与数据源相关:

spring.datasource.platform=prod
spring.jpa.database=Oracle
spring.jpa.hibernate.ddl-auto=none
spring.datasource.initialization-mode=never
spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
spring.jpa.show-sql=true
spring.datasource.url=jdbc:oracle:thin:@hostdetails...
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
spring.jpa.properties.hibernate.default_schema=schema_dbo
spring.datasource.continue-on-error=false

最后是我的 pom 文件条目:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.0.RELEASE</version>
    <relativePath/>
</parent>

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

谢谢您的帮助!


您可以使用更改空闲连接设置空闲超时和最小空闲

空闲超时 此属性控制允许连接在池中空闲的最长时间。此设置仅适用于minimumIdle 定义为小于maximumPoolSize 的情况。一旦池达到最小空闲连接数,空闲连接就不会被终止。连接是否因空闲而退出,最大变化为 +30 秒,平均变化为 +15 秒。在此超时之前,连接永远不会因空闲而退出。值 0 表示永远不会从池中删除空闲连接。允许的最小值为 10000 毫秒(10 秒)。默认值:600000(10 分钟)

基本上减少minimumIdle并增加idleTimeout如果你有很长的空闲时间

另外,如果您的活动量始终较低,请考虑减少maximumPoolSize属性的默认值 10

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring jdbc hikari 连接池 - 不断登录和注销数据库 的相关文章

随机推荐