• 締切済み

jdbcのプロセスの処理について

ある特定のRDBがインストールされているデータベース サーバーにデータのロードを行っていた際、Webからの検索が起動され、この時には、3~5分程度経ってからブラウザにタイムアウトが帰っていました。 (データのロード中なのでテーブルはロックされていた) これは問題ではないのですが、この際Webサーバ側では jdbcのプロセスが生き残り、データベースサーバーへの アクセスを繰り返し続け、結局jdbcのプロセス自体が 増えつづけて、Webサーバ自体のリソースを使いきってしまうという現象が起こりました。 さらに、アクセス要求を受けつづけるデータベース自体も、データのロードが止まってしまいました。 この現象についてjdbcの設定等で回避する方法はないでしょうか? できれば特定のExceptionが発生してWebサーバに瞬時に帰り、なおかつプロセスもデータベースサーバーに 迷惑をを掛けずに死んでいくというのが理想的なのですがこのような回避方法は可能でしょうか? JDBCのことがわからず質問しました。 何卒よろしくお願いいたします。

みんなの回答

  • bo-ken
  • ベストアンサー率42% (3/7)
回答No.1

JDBCのプロセスとは、JDBCを使用しているサーブレットのスレッドと解釈します。 違っていたらごめんなさい。 DBコネクションプールを管理するクラスは用意していないのでしょうか? コネクションプールの管理とは、最大接続=100等とし、同時には100台のクライアントからしか 接続を許可しない方法です。(クライアントというと語弊がありますがとりあえず・・) このクラスはsingletonパターンで実装します。 この手法を使用すれば、最大コネクション数文しかサーブレットが起動できないように抑制できますので、 とりあえずリソースを使い切ってしまうということは防げます。 しかしこのままでは、ブラウザのタイムアウトを待つことには変わりありませんので、 >できれば特定のExceptionが発生してWebサーバに瞬時に帰り、・・・ を回避することが出来ません。 これはこのDBコネクションプールをカスタマイズすれば、 即画面にエラーを表示することも可能と思います。 カスタマイズ方法を説明するのもなんなので、この辺で失礼します。 では、頑張ってください。

参考URL:
http://javadrive.tripod.co.jp/servlet/schedule/18/
mem_masa
質問者

お礼

返事が遅れて大変申し訳ありませんでした。 丁寧にお答えいただき参考になりました。 ありがとうございました。

関連するQ&A