0

Spring 2.5 を使用しています。apache-commons-dbcp 接続プーリングを使用する SimpleJdbcTemplate。クエリの実行時にスレッドを生成するスレッド プールもあります (複数のクエリが実行され、すべてが完了するとその結果が処理されるため、クエリを並行して実行するためにスレッドが生成されます)。

最終的に、すべてのスレッドが TIMED_WAIT で getConnection() を待機しています。スレッドが接続を取得していないようです。DB を確認すると、接続はすべてアイドル状態です。

これは何が原因ですか?最大プール サイズとして 10 の接続と 50 ~ 100 のスレッドがあります。これをどのように構成すればよいですか?DBA は、これで十分な接続が必要であると言っています (それらはすべてアイドル状態であるため、私も同意します)。

SimpleJdbcTemplate のデータソースとして BoneCP でも同じことが起こります。

4

1 に答える 1

2

ResultSet をループしている最中に別のクエリが開始されたため、最初のクエリが十分にあると、2 番目のクエリが接続を取得できず、すべてがデッドロックしたことが原因であることが判明しました。

于 2011-12-13T19:09:36.220 に答える