2012-04-11 5 views
0

私はTomcat6を実行しているUbuntu LAMJサーバーを持っています。Tomcatは1つのアプリケーションをフリーズします

私のJSPアプリケーションの1つは、数日おきにフリーズしてしまい、その理由を理解できません。私はTomcatを再起動して、その1つのアプリケーションを元の状態に戻すことはできません。私は自分のlog4jログに何も得ていないので、Catalina.outにも何も見えません。

このアプリケーションは、server.xmlファイルのコンテキスト要素を介して、javax.sql.DataSourceリソースを別のリソースと共有します。私はこれが問題の原因だとは思わないが、私はそれに言及するかもしれない。

誰かがこの断続的な問題の原因を見つけるために正しい方向に向けることができますか?事前に

おかげで、

クリスティ

+0

スレッドダンプを取ることができますか?またはプロセス全体が凍結されていますか? – Sean

+0

こんにちはショーン。フリーズするアプリです。他のすべてのアプリは、この1つがフリーズしている間にファイルを実行します。このプロセスからどのようにスレッドダンプを取るのですか? –

+0

は回答を投稿しました – Sean

答えて

0

は、実行中のサーバー のスレッドダンプを取得する二つのオプションあなた%のJAVA_HOME%/ binフォルダ内

使用VisualVMの

があります。 jvisualvmというファイルがあります。これを実行し、あなたのTomcatサーバーに接続します。コマンドラインを開き、あなたがプロセスを識別したら、あなたのTomcatの

ps -ef | grep java 

をプロセスIDを見つけ

にコマンドラインから手動で

をスレッドタブをクリックし、「スレッドダンプ」実行中のTomcatインスタンスのID。

kill -3 <pid> 

ここでプロセスIDを置き換えます。これはスレッドダンプをあなたのtomcatのstdoutに送ります。おそらくcatalina.outファイル。

編集 - 以下のマークのコメントを1として:

3スレッドを取るのが普通であるが離れて〜10Sをダンプし、それらを比較します。あなたは、スレッドダンプを取得した後、あなたがスタックスレッドのためにそれを分析することができ、それ はそれをはるかに簡単にスレッドが「スタック」されているかを確認することができますし、 は


を移動しているもの。それは問題としてスタックされたスレッドではないかもしれませんが、少なくともあなたは問題をさらに分析するためにサーバー内で何が起こっているかを見ることができます。

+0

Sean、ありがとうございました。 1つのアプリケーションだけのスレッドIDを見つけるにはどうすればよいですか?私は現在、再起動するためにTomcat全体を再起動する必要があります。私は1つのアプリケーションを再起動する方法がわかりません。 –

+0

すべてが同じtomcatサーバー上で実行されている場合、同じプロセスIDを共有します – Sean

+0

3つのスレッドダンプを10秒間隔で取得して比較するのは正常です。どのスレッドが「スタック」しているのか、どのスレッドが動いているのかを簡単に確認できます。 –

関連する問題