私はSpring 2.5を使用しています。 apache-commons-dbcp接続プーリングを使用するSimpleJdbcTemplateまた、クエリが実行されたときにスレッドを生成するスレッドプールもあります(複数のクエリが実行され、それらの結果がすべて完了した時点で処理されるため、スレッドは並列にクエリを実行するように生成されます)。DB接続飢餓
最終的に、すべてのスレッドはTIMED_WAITのgetConnection()を待機しています。どのスレッドもConnectionを取得していないようです。私はDBをチェックし、接続はすべてアイドル状態です。
この原因は何ですか?私は最大プールサイズと50-100スレッドとして10の接続があります。これをどのように設定する必要がありますか? DBAは、それが十分な接続でなければならないと言います(そして、すべてがアイドルなので私は同意します)。
SimpleJdbcTemplateのデータソースとしてもBoneCPと同じことが起こります。
接続を明示的に閉じないでください。 –
OPが適切に処理する 'SimpleJdbcTemplate'を使用しているのでOPが接続を終了していないとは思わない。しかし、明らかに、これが最初に試すものです。しかし、これらの接続がアイドル状態であることは確かですか? 100スレッドと10コネクションしかありません... SQLクエリがスレッド時間の大部分を占める場合、残りの10個は実際にクエリを実行しています(おそらく 'socketRead'の結果を待っています)。 **すべての**スレッドが待っていますか? –
SimpleJdbcTemplateはそれらを閉じるべきです。スレッドでJConsoleを見て、はい、それらのすべてが待っています。クエリは、平均500ミリ秒未満で完了します。私は15分以上それを残して、遅いクエリではないことを確認しました。結果はありません。 – dontocsata