■ 使用上の注意
* HikariDataSource#close() は、システム終了後にコールすること★ 重要 ★
* HikariDataSource#getConnection()から得たコネクションについては、使用後即 close() をコールしておいた方がいい => これをしていなかったせいで、maximumPoolSize の デフォルト 10 を使い切ってしまい、 その結果、コネクションタイムアウトして落ちていた => システム終了していないのに、close() を呼んでしまっていいの?って思ったが、 以下の「参考文献」が参考になった
参考文献
https://stackoverflow.com/questions/25367261/best-approach-for-returning-connection-objects-to-hikaricp-pool?rq=1As with most connection pools, Hikari doesn't give you an actual JDBC Connection when you ask for one. # 多くのコネクションプールと同様に、Hikari は実際のJDBCのコネクションを提供している訳じゃありません。 What it does instead is give you a proxy that implements the Connection interface. # その代わりに何がコネクションインターフェイスを実装したプロキシを提供するのか In the case of Hikari - it's a ConnectionProxy object. # Hikariの場合、それはConnectionProxy オブジェクトです。 ... 略 ... If you look at the source code for Hikari, at the ConnectionProxy class in particular, you will see that the close() method is very different from the standard one. The code reads as: # Hikariのソースコード(特にConnectionProxy クラス)をみてみれば # close() が標準のものとは、とても異なっていることが分かるでしょうhttps://github.com/brettwooldridge/HikariCP/blob/dev/src/main/java/com/zaxxer/hikari/pool/ProxyConnection.java
Mark the connection as closed, do cleanup, reset underlying connection state and params. # コネクションが閉じたということは、クリーンアップ、下層のコネクションの状態とパラメータをリセットすることを # 覚えておいてください Hence, simply calling close() will just clean and return the connection to the pool. # そのため、単純にclose()をよぶことは、ただクリーンにし、コネクションをプールに返します
■ 設定値
公式サイトhttps://github.com/brettwooldridge/HikariCP
maximumPoolSize
デフォルト:10使用する最大のconnection数を指定
connectionTimeout
デフォルト:30000 (30 seconds)connectionが接続される時のタイムアウト時間を設定
idleTimeout
デフォルト:600000 (10 minutes)本設定値の間、Pool内のconnectionが使われなかった場合、connectionをDBに返却