CentOS 5.9
kill -3 <Java process pid>
実際に何が起こりますか? このRed Hatの記事 のように、Javaスレッドダンプが生成されますが、プロセスは終了しますか?私のテストに基づいていないようです:
[root@foobox ~]# kill -3 14559
[root@foobox ~]# service foo status
foo (pid 14559) is running...
つまり、サービスに影響を与えることなく、この方法でスレッドダンプを収集できますか?
うまくいけば、kill -3
はJVMプロセスを終了しません。
スタックトレースの収集中、特に何千ものスレッドが実行されている場合は、スレッドダンプがサービスに与える影響はごくわずかです。
-Xrs
フラグを使用すると、JVMはSIGQUIT
シグナルを特に処理しなくなり、そのネイティブコードに代替ハンドラーが配置されていない限り、そのシグナルはプロセスを終了する可能性があります。
https://superuser.com/questions/352147/what-does-kill-3-mean により詳細な情報が提供される場合があります。
SIGQUIT
を受け取ったときにどのように反応するかは、プロセス次第です
そのシグナルはプロセスによってキャッチ、無視、またはブロックされる可能性があるため、kill
を尊重しない場合があります。さらにピアリングしたい場合は、PIDをstrace
でスタックトレースしながら、killでSIGQUIT
を送信することをお勧めします。