やりたいこと
正常停止を含めたサービスの停止時にスナップショットを出力する。
環境情報
- P-9W43-9Q11 : uCAR with Java for Spring Boot
- Red Hat Enterprise Linux 9.5 (Plow)
やり方
設定ファイルである~/ucars/conf/config.properties
に以下を追加する。
snapshot.log.filepath=/tmp/snapshot snapshot.onshutdownrequest.collect.condition=ALWAYS
同設定を追加後、SIGTERMによってサービスを停止させるとzipファイルでスナップショットが出力されている。
$ ls -ltr /tmp ... -rw-r-----. 1 root root 309318 ... snapshot_xxxx-xx-xx_xx-xx-xx.xxx_x.zip
以下、補足です。
補足
一般的にスナップショットは想定外の停止時(Exit 0やExit 143以外)に出力が行われますが、同設定を行うことでExit 0を含めた正常終了時にもスナップショットの出力を行えます。
ログとしては下記のようなメッセージが出力されて停止していますが、指定したディレクトリにファイルとして生成されていました。
INFO [Thread-26] com.cosminexus.appruntime.tomcat.tracer.ServerComponentHandler.destroy KDLR30002-I The tracer has stopped.
尚、正常停止以外のSIGKILLのような落とし方でもファイルは出力されることも合わせて確認済みです。
以上です。