セントOS5.9
実行するとkill -3 <java process pid>
実際に何が起こるのでしょうか?このレッドハットの記事Java スレッド ダンプが生成されることは理解していますが、プロセスは終了していますか? 私のテストではそうではないようです:
[root@foobox ~]# kill -3 14559
[root@foobox ~]# service foo status
foo (pid 14559) is running...
言い換えれば、サービスに影響を与えずにこの方法でスレッド ダンプを収集できるでしょうか?
答え1
うまくいけば、kill -3
JVM プロセスは終了しません。
スレッド ダンプは、特に数千のスレッドが実行されている場合、スタック トレースの収集中にサービスにわずかな影響を及ぼします。
この-Xrs
フラグを使用すると、JVM はSIGQUIT
シグナルを具体的に処理しなくなり、ネイティブ コードに代替ハンドラーが設定されていない限り、そのシグナルによってプロセスが終了する可能性があることに注意してください。
答え2
https://superuser.com/questions/352147/kill-3 の意味さらに詳しい情報を提供できるかもしれません。
受け取ったときにどのように反応するかはプロセス次第です。SIGQUIT
そのシグナルはプロセスによってキャッチ、無視、またはブロックされる可能性があるため、 を尊重しない可能性があります。さらに詳しく調べたい場合は、kill で送信しながらkill
PID をスタック トレースすることをお勧めします。strace
SIGQUIT