2017-04-12 11 views
-1

私はあなたの助けが必要です。私はプールの接続のためにhikariCPを使用して、私はDBにクエリを作成するときに誰かが困惑する。接続が確立され、DBにプロセスが発生しますが、応答のタイムラインは約2時間ほど長くなります。タイムアウトをconfig.setConnectionTimeout(TimeUnit.MINUTES.toMillis(2L)); に設定しましたが、それは役に立ちません。これは、接続のみを試みるための時間を設定しますが、クエリの時間と応答時間を設定しません。どのように私は手動で接続を閉じることができますか?hikariCPプールで現在の接続を閉じるにはどうすればいいですか?

+0

おそらくタイムアウトのあるトランザクションを使用していますか? HikariCPではデフォルトのタイムアウトを設定することさえできませんか?あなたはドキュメントを読んだことがありますか? – Kayaman

+0

私は申し訳ありませんが、私は接続しようとしてタイムアウトだと思いますか? – Porty

+0

なぜ接続タイムアウトが気になるのですか?プール内で接続したら、すでに接続されています。 – Kayaman

答えて

0

私はあなたが何をしようとしているのかまだ不明です。

クエリをにタイムアウトさせる場合は、長いクエリの前にStatement.setQueryTimeout()に電話してください。

あなたは単にあなたがConnection.close()を呼び出すときへの接続は、実際にはむしろ、すでに起こっていような長いクエリを使用して、プールに戻るよりも、閉鎖される場合。

なぜですか?デフォルトのmaxLifetimeは30分です。だから、あなたがHikariCPからの接続を得てそれを2時間使用するならば、それはその生涯をはるかに過ぎるでしょう。したがって、Connection.close()に電話すると、HikariCPはすぐにプールから退去します(すなわち、実際のDB接続を閉じる)。

関連する問題