• 締切済み

複数の処理でTomcatが停止する

Javaのシステムを運用しています。 1台のサーバー(CentOS5.0)に、Apache-Tomcat5.0-PostgreSQL8.1-アプリケーション(顧客ごと(10社))がインストールされています。 アプリケーションの切り分けはTomcatのconf/catalina/localhost/コンテキスト.xml で定義しています。(コンテキスト1~10を作成) 昨年秋から以下の障害が発生していますが、未だに原因がわからない状況です。 Javaの知識、Tomcatの知識、PostgreSQLの知識など乏しく、ログも取れていない状況です。 どうか、疑わしい原因、調査方法など教えていただきたく存じます。 障害状況 日付  現象                         回復 11/6 A画面でB画面への遷移ボタンをした時に   Tomcat再起動し、再実行したところ      サーバーのB画面作成処理が中断       正常に処理できた。 11/16 TOPメニューからC画面を選択したが、     約10時間後、中断していたC画面処理      サーバーのC画面作成処理が中断       が再開された。その後正常に処理。 12/26  D画面でE画面への遷移ボタンをした時に   Tomcat再起動し、再実行したところ      サーバーのE画面作成処理が中断       正常に処理できた。 1/6   F画面でG画面への遷移ボタンをした時に   Tomcat再起動し、再実行したところ      サーバーのG画面作成処理が中断       正常に処理できた。 1/8   F画面でH画面への遷移ボタンをした時に    約45分後、中断していたH画面処理      サーバーのH画面作成処理が中断       が再開された。その後正常に処理。      ・他のユーザーがその顧客のシステムを      使うと、E画面処理、G画面処理、H画面      処理で中断する。      ・他の顧客のシステムは、同じ処理を行      っても正常に処理できる。(レスポンス      も正常) 中断した処理では、データベースのアクセスは読込み(SELECT文)のみです。 プログラムではThreadクラスは使っていません。 Tomcatの設定でセッションタイムアウト時間を無制限(-1)に設定していました。 Tomcatの設定でコネクションプールの最大値は100に設定しています。 障害発生時は、ログインユーザーは一人だけでした。 その後、GCログの出力、ヒープメモリ使用状況のログ出力、PostgreSqlのログ出力の設定を行いました。 また、セッションタイムアウト時間を30分に設定しました。 本日(1/29)まで障害は発生しておりません。 よろしくご教授ください。

  • Java
  • 回答数3
  • ありがとう数3

みんなの回答

  • sech1152
  • ベストアンサー率72% (45/62)
回答No.3

単純な発想として、コネクションの閉じ忘れとかは無いですか? コネクションの管理を、自前でやっているのか、フレームワークを利用しているのかで違ってくると思いますので、もしかしたら関係ないかもしれませんが…。 (私も、開発中に時々やってしまいます。まったく反応がなくなり、なんでだ?となり、調べてみると閉じ忘れていた。) 障害発生時のコネクション数を確認してみてはどうでしょうか? あるいは、障害が発生していなくても、コネクション数が予想より多くないかとか。 ただ、起動時にいきなり最大数を確保してしまうようになっていると、見分けがつかないかもしれません。 コネクションを閉じ忘れていても、Tomcatを再起動すれば、コネクションが一旦解放されます。(同時に、ロックも解放されると思います。)

Horirin39
質問者

お礼

ご回答ありがとうございます。 私も最初にコネクションのClose漏れを疑いました。 テスト環境にて、コネクションプールを1個ににてテストしましたが、Close漏れはありませんでした。 以前、Close漏れがあったときは、 SQLNestedException: Cannot get a connection, pool exhausted が発生しエラーログが出ました。 今回はエラーログは何も出ません。 PostgreSQLからの応答をずっと待っているように見えます。 よろしくお願いします。

  • teketon
  • ベストアンサー率65% (141/215)
回答No.2

同時にPostgreSQL8.1を使ったユーザーは居ない、ということで予想は外れてます。 もしも使ったユーザーがいれば、ツールの使用等によりロック処理をしていれば、 10時間後にロック解除することで11/16日のように処理が進むかなと予想しました。 システムが発行するクエリにロックを掛けるようなものはないのでしょうか?

Horirin39
質問者

お礼

teketonさん、ご回答ありがとうございます。 システムが発行するクエリにロックを掛けるようなものはありません。 システム以外では、毎夜、1:02から、バックアップ取得、バキューム、リインデックス処理を行っていますが、同じ時刻には障害は発生していません。 PostgreSQLはSELECT文だけでもロックがかかるという記事を見つけました。 http://d.hatena.ne.jp/chiheisen/20100310/1268238033 この現象の原因になりうるでしょうか。 また、ロックが原因と仮定したとき、Tomcatの再起動でロックが解除されるものでしょうか。 お考えをお聞かせください。 よろしくお願いします。

Horirin39
質問者

補足

ご回答をいただきましてありがとうございます。 現象から見ると、DBの特定のテーブルにロックがかかっていて、ロックが解除されるまで待っているように見えます。 調べましたところ、PostgreSQLはSELECT文でもロックがかかるそうです。 現象が発生した処理では、SELECT文だけです。しかも、データ量も少なく、1秒もかからない処理です。 利用ユーザーは1人でデッドロックがかかることは考えにくいのです。 他に、ロックが解除されない状況というものが発生することがあるのでしょうか。 よろしくご教授ください。

  • teketon
  • ベストアンサー率65% (141/215)
回答No.1

DBにロックがかかったのでは? 該当時間帯にDBを使用していたユーザはTomcatからのみでしょうか。 DBを直接参照していたり、バッチが動いていたりとか。

Horirin39
質問者

お礼

ご回答ありがとうございます。 該当時間帯にDBを使用していたユーザーは、Tomcatからのみです。 バッチ処理は行っていません。 よろしくお願いします。

Horirin39
質問者

補足

ご回答ありがとうございます。 障害発生時の状況は、DBのロックがかった状態と思えますが、 Tomcatを再起動することでロックが解除できるのでしょうか。 また、放置した状態で、10時間後、ロックが解除されることがあるのでしょうか。 teketonさんのお考えをお聞かせください。 よろしくお願いします。

関連するQ&A

  • Tomcatが暴走したのか?

    JavaによるWEBシステムを開発・運用しています。 サーバーは、CentOS5、Tomcat5、PostgreSQL8.2を使っています。 昨日まで正常に動作していましたが、 本日、特定の画面から、次の画面に遷移するボタンを押すと、Weit状態が続き画面が表示されません。 サーバーのログを見ようとしたところ、レスポンスが遅いので、Tomcatを再起動してみました。 その結果、正常に動作するようになりました。 Tomcatのログ(Catalina.out)を見ましたが、再起動するまでのLogは何も出力されていませんでした。 これらのことから、Tomcatが暴走したのではないかと推測したのですが、 ありえることでしょうか? 原因として考えられることがありましたら教えてください。 同じような現象を経験された方は、再発防止対策など教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 止った処理が数時間後動き出したようにみえる現象

    Javaのシステムで、11月16日(土)の午後運用中に、画面のボタンを押しても、サーバーから応答が返ってこないので、他のボタンを押したところ返ってきた処理もあれば、返ってこない処理もありました。 その後、数時間経ってから(真夜中に)、サーバーで返ってこなかった処理が実行されているようなLogが取れました。 サーバーの環境は、OS:CentOS5、java:jdk1.4、Tomcat5.0、PostgreSQL を使っています。 Tomcatを再起動すると正常に動作します。 以下にその時のアプリケーションLOGを示します。 通常、画面でボタン操作などを行うと、サーバーでは「開始」LOGを出力し、処理が終わると「終了」LOGを出力します。 1行目2013/11/16 13:53:56 実行予算内訳書 予算変更画面 初期画面処理開始の後、終了Logが出されるのは、10時間44分後の2013/11/17 00:37:16です。 また、2013/11/16 13:54:21予定日報入力 初期画面処理 開始の後、終了Logが出されるのは、10時間43分後の2013/11/17 00:37:32です。 このようなことがどうして起こるのでしょうか。 原因をどのようにして調査すればよいのでしょうか。 よろしくご教授ください。 アプリケーションLOG 2013/11/16 13:53:56.00978 INFO- 工事 太郎 実行予算内訳書 予算変更画面 初期画面処理開始。 2013/11/16 13:54:17.00419 INFO- 工事 太郎 予定日報入力 初期画面処理 開始。 2013/11/16 13:54:21.00179 INFO- 工事 太郎 日報入力 初期画面処理 2013/11/16 13:54:34.00680 INFO- 工事 太郎 日報入力 戻るボタン処理 開始。 2013/11/16 13:54:34.00693 INFO- 工事 太郎 日報入力 戻るボタン処理終了。 2013/11/16 13:54:36.00365 INFO- 工事 太郎 実行予算内訳書 修正画面 新規作成画面処理開始。 2013/11/16 13:54:36.00367 INFO- 工事 太郎 実行予算内訳書 修正画面 新規作成画面処理終了。 2013/11/16 13:54:40.00022 INFO- 工事 太郎 実行予算内訳書 修正画面 戻るボタン処理開始。 2013/11/16 13:54:40.00023 INFO- 工事 太郎 実行予算内訳書 修正画面 戻るボタン処理終了。 2013/11/16 13:54:44.00312 INFO- 工事 太郎 実績原価月次修正 初期画面処理 2013/11/17 00:37:16.00811 INFO- 工事 太郎 実行予算内訳書 予算変更画面 初期画面処理終了。 2013/11/17 00:37:23.00505 INFO- 工事 太郎 実績原価月次修正 初期画面処理終了。 2013/11/17 00:37:32.00413 INFO- 工事 太郎 予定日報入力 初期画面処理終了。 2013/11/17 00:37:32.00561 INFO- 工事 太郎 実績原価月次修正 初期画面処理終了。

    • ベストアンサー
    • Java
  • tomcatのstdout.logを停止したい。

    今回がはじめての質問になります。 投稿カテゴリが適切ではないかもしれません。 Windows2003Server で稼動している tomcat5.0で出力されるstdout.logが、あるエラーの為1日に100MByteほど出力する状況になってしまいました。 暫定対応として、stdout.logの出力を停止したいと考えています。 レジストリの [HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat5\Parameters\Log] の"StdOutput" の値を空にするとstdout.logは出力されなくなるのですが、メモリリーク等の問題が考えられなくもないので不安です。 なにか設定等でstdout.logの出力を停止する方法はないでしょうか? ご教示いただけますようよろしくお願いいたします。

    • ベストアンサー
    • Java
  • 【助けて下さい!】Tomcat + PostgreSQL について

    こんにちは。今本当に困っています。 Tomcat + PostgreSQL で JSP ページを作成しているのですが、同時に複数のパソコンから接続すると、画面が乱れてしまいます。挙動はそのつど違うので何とも説明しがたいのですが、複数の接続の内容が一つのソケットに統合されてぐちゃぐちゃになって出てくる(?)様な感じです。 そもそも、Tomcat は1接続に対して1スレッドを作成し、この様な事は起こらない様になっているのではないのでしょうか…? 当方の開発の仕方に何か問題があるのでしょうか。かなり困っています。なにとぞ、お力をおかし下さい。よろしくお願い致します。

  • tomcatのログについて

    tomcatのアクセスログを出力したい場合、 コンテキストパスに設定するときは以下のように設定しますが、 コンテキストパスに以下の設定を行わなわずにserver.xmlにtomcat全体の設定として、 ログを出力する設定とした場合、コンテキストパスへのアクセスはログに出力されないんでしょうか? <Context path="/javaroad" docBase="/javaroad" debug="0"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs/AccessLog" /> </Context> ご存知の方教えてください。

    • 締切済み
    • XML
  • eclipse+Tomcat+MySQLでDataSourceLinkについて

    Tomcatの管理ツールでリソースリンクを新規で作成し保存しようとすると、エラーが出で作成できません。あれって、正常に作成されればserver.xmlとかweb.xmlに記述されるんでしたっけ? 画面から作成できない場合、どうしたらよいのでしょうか? 自分で記述可能でしょうか?

    • ベストアンサー
    • Java
  • eclipse + tomcatの連携に関して

    はじめましてwindows上でjavaを動かしている初心者です。 環境設定について悩んでいます。 質問内容 eclipse2.1.3とtomcat5.0.28を連携させて正常に起動していたのですが、手違いでtomcatをアンインストールしてしまいtomcatのみ再インストール(同じ5.0.28)しました。ブラウザ上で動作確認すると 入力 http://localhost:8080/プロジェクト名(test)/ファイル名.拡張子(index.jsp) 結果 HTTPステータス404-/test/index.jsp …となってしまいます。 再インストールの際二箇所変更点があり、以前は C:\Program Files\Apache Software Foundation\Tomcat 5.0 に格納していたtomcatを C:\Tomcat 5.0 に変更し、それに伴いeclipse上の TomcatホームをC:\Tomcat 5.0 Tomcat baseをC:\Tomcat 5.0 設定ファイルをC:\Tomcat 5.0\conf\server.xml に変更。環境変数も 変数名:CATALINA_HOME 変数値:C:\Tomcat 5.0 に変更後、動作確認すると404エラーが返ってしまいます。因みに http://localhost:8080 のみではApacheの画面が正常に表示されます。 tomcat再起動、windows再起動等調べた範囲で試してみましたが、解決できませんでした。 C:\Tomcat 5.0\conf\server.xmlと\conf\web.xml の設定は正常に起動していた時と全く同じ設定にしましたが、他に設定を変える必要があるのでしょうか?またはeclipse再インストールの必要があるのでしょうか?初歩的質問ですがよろしくお願いします。

  • [apache+tomcat]なぜ!?実行したらトムキャットが落ちる!?

    こんにちわ♪ アパッチとトムキャットを使ってJavaシステムを構築しています。 昨日まで順調に動いていたユーザ認証のプログラムが、本日リカバリーして 実行しますと、サーブレットの処理がうまくいかず、トムキャットは閉じ、 IEには「Internal Server Error」と表示されてしまいます。 アパッチはSTOPにはなっていないようです。 このような現象はどういうときに発生しますか? アパッチとトムキャットの連携設定にミスがあるのでしょうか??

    • ベストアンサー
    • Java
  • eclipseでTOMCATが起動しない

    eclipseにTOMCATのプラグインを導入し、eclipseからTOMCAT を起動できるようにしたい(というか、本にはできると書いてある) のですがうまくいきません。 2台のPCでやったのですが、どちらも同じようにだめです。 スタートメニューから、TOMCATを起動すれば起動してくれます。 http://localhost:8080 にて起動が確認できます。 TOMCATは4.1.31で、プラグインはcom.sysdeo.eclipse.tomcat_2.1.0です。 web.xmlはservlet-mappingのコメントアウトをはずしてます。 TOMCATホームは C:\Program Files\Apache Group\Tomcat 4.1 設定ファイルは C:\Program Files\Apache Group\Tomcat 4.1\conf\server.xml としています。 サーブレットを作成して、eclipseからTOMCATの起動ボタンを押すと、 なにやら起動画面が出てくることは出てくるのですが、 http://localhost:8080/Servlet などとしても、何も見つからないと出てしまいます。 ここで、スタートメニューからTOMCATを起動させ、ブラウザで↑にアクセスするとようやく 起動が確認できました。 何かが間違えているのでしょうか? 足りない情報は捕捉をお願いします。 よろしくお願いいたします

    • ベストアンサー
    • Java
  • TOMCATについて質問です。

    はじめまして。宜しくお願いします。 JSP初心者です。 現在 Apache1.3.27とTOMCAT4.0.6でJSPを学習しています。 上記のサーバーなどの環境設定を済まして、 ブラウザからJSPファイルを閲覧できるところまできました。 TOMCATについて疑問があるのですが TOMCATを実行するとDOS画面が立ち上がり サービスを起動した旨のメッセージがでるのですが このDOS画面をとじたら、 JSPファイルがみれなくなってしまいます。 TOMCATは起動中はずっとこの画面を (タスクバーに)残しておかなければ いけないのでしょうか? (できれば、とじてしまいたい。) ご存知の方がおられましたら 宜しくお願いします。

    • ベストアンサー
    • Java