質問: Spring Bootによるシステムを構築しています。 HikariCPを使用してOracleDBと接続を行っています。 起動時は問題ないのですが、稼働後しばらくすると確保していたConnection Poolが一つもなくなり、Total Connection が0になります。 そうなった場合、アプリケーションを再起動するまでConnectionが戻ることがありません。 何が原因として考えられますでしょうか。 HikariPoolの設定は以下のようにしています。 ``` spring.datasource.hikari.auto-commit=true spring.datasource.hikari.connection-timeout=600000 spring.datasource.hikari.max-lifetime=900000 spring.datasource.hikari.maximum-pool-size=50 spring.datasource.hikari.minimum-idle=10 ``` 一度Connection-timeoutのせいだと考えたため、これを3600000(1時間)に変更したところ、 ログに以下のように表示され、同じように枯渇現象が発生していたため、60000と縮めました。 ``` (IOエラー: Invalid Operation, NOT Connected). Possibly consider using a shorter maxLifetime value. ``` しばらく安定稼働していたのですが、ある時からまた同様の現象が発生するようになりました。
回答: Hikari CPのGitHubのissuesに同様の事象が報告されていました。このページをじっくり読んでいただければ、本件も解決するのではないかと思います。 ざっと読んだ印象ですが、おそらく、この回答を参考にソケットタイムアウトを設定すれば、解決するのではないかと推測します。