1. 程式人生 > >JavaWeb問題集錦: 資料庫連線池請求超時 HikariPool-1 - Connection is not available, request timed out after 30000ms

JavaWeb問題集錦: 資料庫連線池請求超時 HikariPool-1 - Connection is not available, request timed out after 30000ms

  • 報錯日誌:     java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
  •  原因一:     連線洩漏(在從池中借用之後連線沒有關閉)。
  • 解決方法
  • hikariDataSource.setIdleTimeout(60000);
    hikariDataSource.setConnectionTimeout(60000);
    hikariDataSource.setValidationTimeout(3000);
    hikariDataSource.setLoginTimeout(5);
    hikariDataSource.setMaxLifetime(60000);
    
  •   原因二:     這個問題可能與HikariCP無關。這個問題之所以持續存在,是因為REST控制器中的一些複雜的方法通過JPA儲存庫執行了DB中的多個更改。由於某些原因,對這些介面的呼叫導致了越來越多的“空閒”活動連線,耗盡了池。將這些方法註釋為@事務性或將所有邏輯封裝到事務服務方法中,似乎都能解決這個問題。或者  連線不夠用,加大連線池的最大連線數;
  • 解決方法
  • "maximumPoolSize": 15;
    "minimumIdle": 10;