先に
以下のissuesを既に読んだ人に新たな知見を与える記事ではありません
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>'