2012-01-30 22 views
4

Apacheモジュールmod_fcgidを使用してリクエストを処理するcgiスクリプト(チケットの検証や同様の処理)を使用して、処理結果に基づいてサーバー上のファイルを処理するのではなく、複数のサーバーで問題が発生します。apache mod_fcgidの問題

は私がログに繰り返し次のエラーを得続ける:

[Mon Jan 30 23:11:41 2012] [warn] [client 95.35.160.193] mod_fcgid: error reading data, FastCGI server closed connection 

[Mon Jan 30 23:11:41 2012] [warn] [client 95.35.160.193] (32)Broken pipe: mod_fcgid: ap_pass_brigade failed in handle_request_ipc function 

[Mon Jan 30 23:13:34 2012] [warn] [client 37.8.52.128] mod_fcgid: can't apply process slot for /var/www/cgi-bin/assetx.fcgi 

これらの問題は、サーバーが遅くなることになり、その他の時間は、サービス一時的に利用できないエラーになります。

のサーバーは、私は現在、以下のように、次のfcgiのディレクティブを設定している、彼らに大きなトラフィックを持っている:サーバー上の

FcgidMaxRequestsPerProcess  0 
FcgidMaxProcesses  300 
FcgidMinProcessesPerClass 0 
FcgidIdleTimeout  240 
FcgidIOTimeout 240 
FcgidBusyTimeout 300 

平均負荷は、プロセスの数は平均250個のプロセス上で、正常です。

私はこの問題に関する日々の研究を行っていますが、許可問題であると言われています。上記のパラメータを調整しようとしましたが、これは私が試した最終的な値ですが、うまく機能しませんでした。私はまた、Apacheの代わりに使用されるnginxを試しているが、私はnginxを使用してサーバー上のこの高負荷でCGIスクリプトを実行する適切な方法を見つけることができません。

この問題を解決するにはどうすればよいですか?

答えて

1

あなたのアプリは、Apacheが正常に連絡する前に瀕死になっています。答えは、なぜアプリが死んでいるのかを調べることです。

FastCGIプロセスは、エラー状態であっても終了したり終了したりしてはなりません。 ApacheはFastCGIスクリプトがそのまま存在することを期待しています。

あなたにはcgiスクリプトがあります。 FastCGIをサポートするためにどうやって変更しましたか?

通常、CGI :: Fastのようなものに切り替える必要があります。すべての呼び出しを終了して終了し、CGI :: Fast whileループを使用してスクリプトをリファクタリングする必要があります。