unicornのworkerプロセスが再起動を繰り返す話

Rails5.2 + capistrano + unicorn + nginxでデプロイがうまくいくようになってもunicornを起動した後にunucornのエラーログがものすごい勢いで肥大化していった。

原因はunicornのworkerプロセスが起動したそばから死に、再生成を繰り返しているためだった。

この問題の場合、どこがクリティカルだったのかは結局分からなかったがとりあえず取った対策として

(nginxを終了してみても状況は変わらずだったのでnginx周りの調査は割愛する)

推測のレベルになってしまうがこの問題の場合、unicornのpidとsockファイルのパスの指定か権限に問題があったのだと思われる。

とりあえずpidを指定しているconfig系ファイルを全て絶対パスで同じパスを指すようにした上権限上間違いなく書き込み権限がある位置に配置しておいたらうまく動くようになった。

/tmpには置くな、nginxから見れなくなるケースが有る、という情報もあったのでshared/tmpフォルダを作成して権限に777を指定してそこにpidとsockファイルを置くようにした。

pidのパスを変えてデプロイした時点でunicornのmasterプロセスが2つ立ち上がってにkill -9を投げても死ななくなるという恐ろしいケースも存在したのでサーバーごと再起動したという一面もあったがとにかく設定ファイルは理解をして書かないと恐ろしい不具合を生むことを感じた。

コメントを残す