私はSlick3.1.1 + HikariCP2.5.1を使用しています。私の設定は次のとおりです。私は< 0.4秒を取って、各クエリで、3秒あたり約1クエリを実行しているSlick/HikariCPで接続が閉じられた後に操作が許可されない
rdsConfig = {
url = "jdbc:mysql://mydb.........us-west-2.rds.amazonaws.com:3306/owlschema"
driver = "com.mysql.jdbc.Driver"
connectionPool = HikariCP
maxConnections = 222
minConnections = 30
keepAliveConnection = true
properties = {
user = "me"
password = "mydarksecret"
}
numThreads = 40
}
。最初のすべてで罰金動作しますが、約2時間後、HikariCPは「接続が閉じられた後、許可されていない操作」に関するエラーが生じ、クローズ接続を開始します。私はこれを回避するために必要ないくつかの他のコンフィグ設定が
15:20:38.288 DEBUG [] [rdsConfig-8] com.zaxxer.hikari.pool.HikariPool - rdsConfig - Timeout failure stats (total=30, active=0, idle=30, waiting=0)
15:20:38.290 DEBUG [] [rdsConfig connection closer] com.zaxxer.hikari.pool.PoolBase - rdsConfig - Closing connection [email protected]: (connection is evicted or dead)
15:20:38.333 DEBUG [] [rdsConfig connection closer] com.zaxxer.hikari.pool.PoolBase - rdsConfig - Closing connection [email protected] failed
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_77]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_77]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_77]
at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.8.0_77]
ありますか?私はHikariCPが接続をまったく閉じている理由を理解していません。もしそれが欲しいのであれば、私のコードに非接続の接続だけを供給するべきではありませんか?デフォルト設定でうまく動作するという評判があるので、なぜ問題があるのか混乱しています。ありがとう。
ありがとうございます。あなたの5つの閉鎖理由のうち、私は '... passed idleTimeout'、' ... passed maxLifetime'、 '... evicted or dead'を取得しています。それぞれのエラーは上記のログに示されているパターンに従います。つまり、すぐに接続が終了しました(evictedまたはdead)、その後、接続が閉じられました。設定ファイルには、表示する質問を編集したので、 'minConnections = 30'も含まれています。 HikariCPは、使用中であっても 'maxLifetime'に達したときに接続を閉じるのですか? – thund
HikariCPは使用中に接続を閉じません。使用中の接続が '' maxLifetime''に達すると、それは追い出しのためにマークされ*、次にスレッドがそれを借りようとするときに追い出されます。 – brettw