2

Django ベースのサイト全体で 504 ゲートウェイ タイムアウト エラーが発生し、ページが表示されないことがあります。

このようなエラーを検出し、必要に応じて FastCGI プロセスを再起動するために、5 分ごとに実行されるシェル プログラムと cronjob を作成することは可能ですか?

現在、FastCGI がクラッシュした場合に備えて以下のコマンドを使用して再起動していますが、504 ゲートウェイ エラーが発生してもプロセスがまだ実行されているため、上記の状況では機能しません。

ps ax | grep -v grep | grep port=8001 > /dev/null || restart_fcgi.sh
4

2 に答える 2

3

おそらく、最初にサイトが 504 エラーの処理を開始する理由を見つけて、ログを確認し (十分な情報がない場合はログを追加してください)、問題が何であれ修正する必要があります。あるいは、nginx + apache + mod_wsgi がより安定したアプローチであることに気付くかもしれません。nginx は静的コンテンツを提供するための優れたフロントエンド Web サーバーですが、Apache は動的プロセスをホストするのに優れています。両方を組み合わせてみてください。以前は nginx + fastcgi を使用していましたが、前者の方がはるかに安定したアプローチであることがわかりました。

それでも問題の原因を特定できない場合は、ローカルで実行して応答コードをチェックする監視スクリプトを設定できます。5XX が見つかった場合は、fastcgi プロセスを強制的に再起動できます。スクリプトには Python + httplib を使用でき、上記のシェル スクリプト (および適切な kill -9 ステートメント) を実行する os.system を使用できます。

于 2010-03-21T13:48:40.607 に答える
0

あなたがこの問題を抱えているなら、スーパーバイザーはあなたの友達だと思います。とても良い友達です。デーモンツールと同様ですが、簡単な設定、多くのヘルプ、非ルートの使用を除きます。

確実に問題を見つけようとする必要がありますが、それでも、1 時間の準備は、失敗した後にプロセスが再起動することに頼ることができることを意味します。

于 2010-05-12T00:02:11.143 に答える