2017-06-26 13 views
1

私はHikariCPとspringbootを使用しますが、しばらく私のアプリがクラッシュした後、私はエラーを得た: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 

です保存、検索、DBへのアクセス、どのようにメソッドが接続をブロックしているかを視覚化できますか?

TKS

答えて

0

は1分(60000ms)のようなものに設定し、leakDetectionThresholdを有効にします。どこかで接続リークが発生している可能性があります...接続は借用されますが、決して閉じられません(返されます)。

+0

どのようにspringbootでこれを有効にすることができますか? TKS –

1

あなたのデータベースサーバーが接続されていないようです.hikariのプロパティmaximumPoolSizeのデフォルト値は10です。これは、サーバーの起動時に10の接続を作成しようとし、10の接続を取得できない場合は起動せず、ひかり構成を使用して作成しているプール内のDBサーバープールのサイズが小さい場合に失敗します。 sprongbootサーバーを起動してからこの問題に直面する可能性がある場合は、leakDetectionThresholdを有効にして、接続に時間がかかり、ひかりプールに戻っていないことを確認してください。

spring: 
    datasource:   
     hikari:      
      leak-detection-threshold: 1000 
関連する問題