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

帐篷

我正在使用Spring Boot数据jpa来连接到Oracle数据库。
Spring使用HikariCP进行JDBC连接,默认情况下会创建大小为10的固定连接池

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

从oracle日志中提取,该日志显示了持续的登录/注销

其中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>

谢谢您的帮助!

用户7294900

您可以使用idleTimeout和minimumIdle更改空闲连接设置

idleTimeout此属性控制允许连接在池中处于空闲状态的最长时间。仅当minimumIdle定义为小于maximumPoolSize时,此设置才适用。一旦池达到MinimumIdle连接,空闲连接将不被取消。连接是否以空闲状态退役,最大变化为+30秒,平均变化为+15秒。在此超时之前,连接永远不会因为闲置而退役。值为0表示永远不会从池中删除空闲连接。最小允许值为10000ms(10秒)。默认值:600000(10分钟)

基本上,如果闲置时间长,则减少minimumIdle和增加idleTimeout

另外,如果您的活动总是很少,请考虑将maximumPoolSize属性从其默认值10减少

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章