VTRyo Blog

一歩ずつ前に進むブログ

UnicornがGracefulにrestartしているのか確認する kill -s USR2 `cat unicorn.pid`

ども。タイトル通りです。

確認する方法はいくらでもあると思いますが、僕が一番よく使う方法を書いておきます。

なおgracceful restartとは以下の部分の話をしています。

USR2 - reexecute the running binary. A separate QUIT should be sent to the original process once the child is verified to be up and running.

bogomips.org

ps aux | grep unicorn

コマンドは一部加工してお送りしています。

$ ps aux| grep uni
deploy   11285  6.5  5.0 453192 203916 ?       Sl   14:29   0:07 unicorn_rails master --env xxx --daemonize -c unicorn.conf
deploy   11375  0.2  4.9 724588 198868 ?       Sl   14:30   0:00 unicorn_rails worker[0] --env xxx --daemonize -c unicorn.conf
deploy   11377  0.0  4.7 453192 193140 ?       Sl   14:30   0:00 unicorn_rails worker[1] --env xxx --daemonize -c unicorn.conf
ec2-user 12011  0.0  0.0 110488  2020 pts/0    S+   14:31   0:00 grep --color=auto uni
$ unicorn restart
$ ps aux | grep unicorn
deploy   13528 45.8  5.0 453376 204080 ?       Sl   14:40   0:07 unicorn_rails master (old) --env xxx --daemonize -c unicorn.conf
deploy   13556  0.5  4.7 453376 192756 ?       Sl   14:40   0:00 unicorn_rails worker[0] --env xxx --daemonize -c unicorn.conf
deploy   13558  0.5  4.7 453376 192948 ?       Sl   14:40   0:00 unicorn_rails worker[1] --env xxx --daemonize -c unicorn.conf
deploy   13601 78.3  2.0 302896 81300 ?        Rl   14:40   0:02 ruby unicorn_rails --env xxx --daemonize -c unicorn.conf
root     13607  0.0  0.0 110488  2016 pts/0    R+   14:40   0:00 grep --color=auto unicorn

old状態になったので、徐々にプロセスが切り替わっていくことがわかりました。

watch -n 1 'ps -ef |grep unicorn'

これはリアルタイムに目視監視します。

Every 1.0s: ps -ef |grep unicorn                                                                Thu Jan 10 14:29:57 2019

deploy    8153     1  1 14:19 ?        00:00:07 unicorn_rails master (old) --env xxx --daemonize -c unicorn.conf
deploy    8190  8153  0 14:19 ?        00:00:00 unicorn_rails worker[0] --env xxx --daemonize -c unicorn.conf
deploy    8193  8153  0 14:19 ?        00:00:00 unicorn_rails worker[1] --env xxx --daemonize -c unicorn.conf
ec2-user 10411  8975  0 14:29 pts/0    00:00:00 watch -n 1 ps -ef |grep unicorn
deploy   11285  8153 93 14:29 ?        00:00:02 ruby unicorn_rails --env
ec2-user 11312 10411  0 14:29 pts/0    00:00:00 sh -c ps -ef |grep unicorn
ec2-user 11314 11312  0 14:29 pts/0    00:00:00 sh -c ps -ef |grep unicorn

Deploy時にちゃんとrestartが走ってプロセスが切り替わってるかなーとリアルタイムでみたいときに使ってます。

参考

qiita.com