[Seasar-user:19043] Re: DBコネクション枯渇時にコネクション取得がブロックされ続ける現象について

阿部 裕康 [E-MAIL ADDRESS DELETED]
2009年 12月 18日 (金) 16:09:16 JST


阿部です。

> それより,コネクションを取得済みのスレッドが
> コネクションをプールに返そうとして,checkin() が
> synchronized なのでデッドロック状態になるのでしょう.

こちらで確認した限りではcheckIn() でブロックはされていませんでした。

トランザクションを開始しているスレッドが、続きけてSQLを実行する際に
checkout()の中でカレントのコネクションを取得するので、
ここでブロックされているようです。

S2DBCPだと、checkout()内でwaitを呼ぶのでブロックは解除されますが、
TOMCATのDBCPだとブロックされ続けるので、実行中の全てのスレッドが
止まります。


>・DBCP の maxActive ≧ スレッド数となるようにする

>・S2DBCP でプールする

アプリの作りを考慮すると、スレッド数=コネクション数とも限らないため
余裕のある値を算出して設定するか、
S2DBCPでプールする処法で検討しようと思います。


ありがとうございました。


━━━━━━━━━━━━━━━━━
 キヤノンソフトウェア株式会社
  商品企画本部 商品開発一部
    商品開発1課) 阿部 裕康
 <[E-MAIL ADDRESS DELETED]>
━━━━━━━━━━━━━━━━━



Seasar-user メーリングリストの案内