Linux + Java 6でスタンドアロンのJavaアプリケーションが実行されていますが、スタックされているようです(ログは生成されません)。 どうすればこのスレッドを使用せずにダンプできますか他のツール(例えば。jstackは)スタンドアロンJavaアプリケーションのスレッドダンプ
は、コマンドの下にしようとしましたが、彼らは私が何をしないのです何
kill -3 <pid>
kill -QUIT <pid>
をしていませんか?
Linux + Java 6でスタンドアロンのJavaアプリケーションが実行されていますが、スタックされているようです(ログは生成されません)。 どうすればこのスレッドを使用せずにダンプできますか他のツール(例えば。jstackは)スタンドアロンJavaアプリケーションのスレッドダンプ
は、コマンドの下にしようとしましたが、彼らは私が何をしないのです何
kill -3 <pid>
kill -QUIT <pid>
をしていませんか?
Java VisualVM(すべてのJDKのbinディレクトリに含まれています)を使用してJMXに接続できます。 JVMの起動パラメータ(リモートホスト)に
-Dcom.sun.management.jmxremote.port=PORT
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
を追加して認証を有効にするだけです。
次に、VisualVMをクライアントで起動し、接続を追加します。
こちらをご覧ください:http://visualvm.java.net/docindex.html
リモートサーバーで作業していて、VisualVMがありません。 –
リモートサーバーでは、上記のjmxサポートを有効にするだけです。クライアントがxserverを使用していませんか? – Stefan
はjps
コマンド(必須ではないが)からPIDを取得します。
root権限で試しましたか? Javaプロセスがルート(またはデーモン)権限で開始された場合は、これを考慮する必要があります。
# kill -3 <pid>
$ sudo kill -QUIT <pid>
またH
(ないh
)を押してtop
出力内のスレッドを見ることができます。
そして、スタックを識別できる場合は、pidを取得して16進数にしてから、jstack
でスタックトレースを確認します。
よろしくお願いいたします。
はルートではなく、そのプロセスの所有者と同じユーザーです。 –
'kill -9'(SIGKILL)はどうでしょうか?それは無条件にプロセスを殺すでしょう。 –
@ Christian.K彼はスレッドをダンプするのではなく、プロセスを終了することを望んでいると思う。 – ssedano
とった。 "Ctrl + \"は私にダンプを与えます。 –
あなたのコメントを回答に変換し、それを自己承諾してください。 –
'kill -3'も動作するはずです。これがうまくいかないのは、コンソールが見えないときだけです。 –