JavaWeb問題集錦: 資料庫連線池請求超時 HikariPool-1 - Connection is not available, request timed out after 30000ms
阿新 • • 發佈:2018-11-29
- 報錯日誌: 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;