Posted at

passenger 再起動のための touch tmp/restart.txt しても空振りしてないか?気になった

More than 3 years have passed since last update.


passengerの再起動の動作が変わっているのか。

http://qiita.com/QUANON/items/a321d2d1ca9c908d59e7

Release 5.0.0 beta 1 

これはパフォーマンス上の理由から passenger_stat_throttle_rate (Apache の場合は PassengerStatThrottleRate) のデフォルト値が 10 になったため。

passenger_stat_throttle_rate を 0 に設定すると、touch restart.txt 後に即座に再起動されるという従来と同じ挙動になるが、推奨しない。

http://ameblo.jp/hbnizm31/entry-11906103519.html

http://qiita.com/marsa746079/items/da6e19b8436232a8e62b

http://hakutoitoi.hatenablog.com/entry/2014/03/10/191942

https://gist.github.com/koudaiii/9af3483746352b59126e

https://www.phusionpassenger.com/documentation/Users%20guide%20Apache.html#_redeploying_restarting_the_rack_application

公式では

touch /webapps/rackapp/tmp/restart.txt

が書かれている

PassengerStatThrottleRate

https://www.phusionpassenger.com/documentation/Users%20guide%20Apache.html

この値を10(sec) から 0にしておいたら以前と同じ動きのよう。(ただし、ディスクへの負荷が心配)


Passengerのログはどこに書かれる?

http://redmine.jp/tech_note/passenger-options/

ログは Apache の error ログ(CentOS の場合は /var/log/httpd/error_log)に出力されます。

passenger がこのアプリだけ再起動した、というログはでてくれないか?

/var/log/httpd/error_log の以下を確認すればよさそう

[ 2015-08-05 15:24:39.7621 20757/7fa62662a700 age/Hel/Main.cpp:724 ]: Disconnecting long-running connections for process 25182, application /web/XXX (production)#default


passengerの状態

passenger-status コマンドで確認できる。

/web/XXX (production)#default:

App root: /web/XXX
Requests in queue: 0
* PID: 25976 Sessions: 0 Processed: 2 Uptime: 5s
CPU: 6% Memory : 31M Last used: 5s ago

アクセスするごとに Processed が増えて行く。

touch tmp/restart.txt の後のアクセスから、リセットされ0からのスタートとなっている。


対策

passenger は デフォルト設定により10sec おきに restart.txt をみていると考える。

そのため、touchしてても最悪10sec後にみられる可能性あり。

そのため、10sec まってからアクセスするが確実。

または passenger の PassengerStatThrottleRate を変える。