0

Apache 2.2、tomcat 6 でアプリケーションを実行しており、struts フレームワーク、休止状態フレームワークを使用しています。バックエンドでMysqlを使用しています。また、サードパーティのサーバーとやり取りして、ユーザーが要求したいくつかのリクエストを送信します。機密保持上の制約により、私たちが何をしているかを正確にお伝えすることはできませんが、何もカスタマイズしておらず、Apache、Tomcat などで利用可能な最も一般的なビルドを使用していることを保証できます。Linux プラットフォームを使用しています。多くの訪問者が当社のサイトにアクセスし、最初に支払いゲートウェイを使用して支払い、次に製品を購入します。製品を購入するには、サードパーティのサイトにアクセスする必要があります。シンプルな電子商取引のような設定です。問題は、サーバーが時々ハングすることです。応答しないため、(私が知っている) tomcat コンテナーによって提供されるリンクをクリックしても、読み込まれません。ここに私が助けが必要なものがあります:

  1. 私のホスティングはヘッドレス Linux プラットフォーム上にあるため、適切なデバッグ ツールを提案してください。
  2. ログを記録し、ほぼすべての例外 (発生した場合) のスタック トレースを出力します。常に catalina.out を監視しますが、サーバーがハングすると、catalina.out にアクティビティが表示されません。これは誰かに手がかりを与えることができるかもしれません。
  3. ハイバネート用に show_sql を無効にして、有効にしようとしましたが、それでもアプリケーションがクエリでスタックしているかどうかを判断するのに十分ではありませんでした。また、slow_sql ログを有効にしていますが、重要なクエリは表示されません。アプリケーションがクエリでスタックしているかどうかを確認するにはどうすればよいですか?
  4. アプリケーションがクエリで停止していない場合、どこで停止しているかを知るにはどうすればよいですか?
  5. Javaスタックダンプを取得するにはどうすればよいですか?
  6. そのような問題を解決するために可能な方法は何ですか。

どんな提案も大歓迎です。私の質問を読んでくれて、そしてあなたが答えを書くのに時間を割いてくれてありがとう。

4

1 に答える 1

0

あなたの状況に直面して、サーブレットコンテナが「ハング」したときにスレッドダンプを行います。スレッド ダンプは、特定の JVM 内のすべての Java スレッドのスタック トレースのリストを提供します。

スレッド ダンプを実行するのは非常に簡単です。

  1. Tomcat のプロセス ID を見つけます。ps -ef | grep java
  2. プロセスに SIGQUIT を送信します。kill -3 tomcatProcessId

スレッド ダンプの内容は にありTOMCAT_HOME/logs/catalina.outます。

于 2012-07-11T14:13:04.857 に答える