Springboot HikariCP

时间:2017-06-26 19:07:27

标签: postgresql spring-boot spring-data-jpa hikaricp

我使用Springboot和HikariCP,但过了一段时间我的应用程序崩溃了,我收到了错误:

org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection
...

Caused by: org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection

....
Caused by: java.sql.SQLTransientConnectionException: HikariPool-6 - Connection is not available, request timed out after 30000ms.

这是我的aplication.properties

spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.url=jdbc:postgresql://localhost:5432/db_dnaso
#spring.datasource.url=jdbc:postgresql://172.16.1.10:5432/db_dnaso
spring.datasource.username=postgres
spring.datasource.password=dna44100
spring.datasource.driver-class-name=org.postgresql.Driver

所以我有很多保存,查找和匿名访问数据库,我如何可视化方法阻止我的连接?

TKS

4 个答案:

答案 0 :(得分:1)

看起来你的数据库服务器没有连接.hikari中属性maximumPoolSize的默认值是10。这意味着它将尝试在服务器启动时创建10个连接,如果无法获取10个连接则无法启动,或者如果您在使用Hikari配置创建时,如果您的数据库服务器池大小在池中具有较少的连接,则可能会失败。 如果你能够启动sprongboot服务器然后面对这个问题,那么尝试启用leakDetectionThreshold并检查哪个连接花费更多时间而不返回hikari池。

spring:
    datasource:        
        hikari:                    
          leak-detection-threshold: 1000

答案 1 :(得分:0)

启用leakDetectionThreshold,设置为1分钟(60000毫秒)。您可能在某处发生了连接泄漏...连接被借用但从未关闭(返回)。

答案 2 :(得分:0)

在springboot中,您可以在spring.datasource.hikari.leak-detection-threshold=10000中设置application.properties(以毫秒为单位)。

maximumPoolSize的默认值为10。您可以使用spring.datasource.hikari.maximum-pool-size=xx进行更改。

答案 3 :(得分:0)

server.port=8080 //this is just example
spring.jpa.database=mydb // this is just example
spring.datasource.platform=postgres
spring.datasource.url=jdbc:postgresql://localhost:5432/db_dnaso
spring.datasource.username=postgres
spring.datasource.password=dna44100
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true