コネクションは閉じろ - 開けたら最後まで責任とってと彼女はいった
2007/09/06
今後何かの役にたつかもしれないのでメモ
おおざっぱにですが。
まず最初にアプリケーションサーバを疑った。
そして、maxThreadsとかの値を変更した。
で、つぎに、データベースのコネクションプールを疑った。
使用しているのは、Overview - Commons DBCP
で、調べるとBasicDataSource (Commons DBCP 1.3-SNAPSHOT API)のmaxActiveの初期値が小さいという判断で、大きくした。
そして、maxWaitが-1(無限)だったので、10000にした。
そうするとクライアントが固まってみえることはなくなった。データベース接続エラーがでるようになったけど。
ほんのちょっとだけ、状況は解決したように見えたけど、だめだった。
で、コードのある部分のロジックのミス(if文の判定が逆)から一度だけ動作を期待している箇所が、何度も動いていることがわかった。
※でも、これログがでているはずだから開発中に気がついてもよかったのかもしれない。
で、その何度も動作している箇所のコードがマルチスレッド環境で、運が悪ければ、connectionを閉じない可能性があった。コネクションの使い回しの仕組みが危うかった。
※実験してたしかに閉じてないないだろうケースがでた。
で、どの点においても、曖昧な知識で試行錯誤しているのが残念無念。
: