Rails
puma

railsアプリをデプロイすると2回に1回pumaが落ちる問題

More than 1 year has passed since last update.

先に

以下のissuesを既に読んだ人に新たな知見を与える記事ではありません :bow:
https://github.com/puma/puma/issues/1308
https://github.com/seuros/capistrano-puma/issues/237

結論

pumaの3.9.1にてissuesが上がっています。
puma-3.8.2に下げるのが 2017/07/20 現在、解決策として提案されています。
「puma 3.10.0 にて修正された!」という喜びの声が届いています。

経緯

railsをデプロイすると2回に1回サービスが落ちていた。
調べると、puma:restartするときにエラーを吐いて落ちていることが判明。
pumaプロセスが無い時はpuma:startが実行されるので、落ちた次のデプロイは成功する。
pumaプロセスが有る時はpuma:restartが実行されるので、成功した次のデプロイはpumaが落ちる。
ciは「pumaにrestartを依頼することに成功したよ!」とだけ言ってpumaが正常に上がったかを検知していなかったので、発見が遅れてしまった。

同定方法

puma_error.logを確認して以下内容だったら同じ原因である可能性があります。

puma_error.log
/usr/local/rbenv/versions/2.4.1/lib/ruby/2.4.0/rubygems.rb:270:in `find_spec_for_exe': can't find gem puma (>= 0.a) (Gem::GemNotFoundException)
    from /usr/local/rbenv/versions/2.4.1/lib/ruby/2.4.0/rubygems.rb:298:in `activate_bin_path'
    from /var/www/ws_shimapo/shared/bundle/ruby/2.4.0/bin/puma:22:in `<main>'