状況: Rails + Unicorn を使用し、Capistrano でデプロイしています。Rails アプリがプロダクション モードで起動しないことがあります (実際のプロダクションではなく、ステージング環境です)。これは通常、デプロイ スクリプトまたは構成のエラーが原因で発生します (したがって、通常はテストでは検出できません)。これが発生すると、ユニコーン マスター プロセスは、失敗したワーカーを強制終了し、新しいワーカーを生成します。これも失敗します。その間、Unicorn は大量の CPU を消費し、同じメッセージでログを汚染します。
手動の方法 (良くない):ホームページにアクセスして、動作するかどうかを確認します。を見てくださいhtop
。ログを追跡します。ユニコーンを手動で倒す。短所:忘れやすい。ログが汚染され、反応している間に CPU に負荷がかかります。
別の解決策:ユニコーンのpreload_app true
. これにより、マスター プロセスがすぐに失敗します。短所:幸せなシナリオでは、メモリ消費量が高くなります。
ベストプラクティス: - ???
ユニコーン マスターが無駄に失敗した子供を産み出そうとしていることを巧みに検出して阻止する方法はありますか?