14

次の警告が表示されます。

mod_fcgid: /var/www/cgi-bin/cgi_wrapper/cgi_wrapper のプロセス スロットを適用できません

この警告が表示されるとすぐに、サーバーの CPU が 97% ~ 101% に上昇します

サーバーは、毎日約 140K のページビューを取得します。この警告は主に 11:00 ~ 12:00 頃に表示されます。Analytics によって計算された 140K ページビューに加えて、Web サイトにテキスト広告を表示しているサード パーティの Web サイトからもリクエストが行われます。約 2700 の Web サイトが 1 つの広告を表示しており、サーバーに対して 1 時間あたり合計 22139 のリクエストを行っています。

試してみchmod 755 /var/log/httpdましたが、 /var/log に「httpd」というフォルダーがありません

MaxSpareServers と MaxClients を可能な限り高い値に調整しようとしました。しかし、まったく効果がありません。Apache の再起動後、しばらくは問題ないようです (サーバーの応答はまだ少し遅く、ログ ファイルに警告が表示されなくなりました)。しかし、しばらくすると同じ警告が表示され、CPU が再び上昇します。

誰かが提案を持っている場合は、私に知らせてください、ありがとう。

4

1 に答える 1

33

この警告は、FastCGI プロセス プールが使い果たされていること、および FcgidMaxProcesses のグローバル制限と FcgidMaxProcessesPerClass のスクリプトごとの制限があることを示します ( http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html#fcgidmaxprocessesを参照) 。 .

このプールのサイズは、次の情報で調整できます。

  • アプリケーションが CPU バウンドで、遅くしたくない場合は、FcgidMaxProcesses をサーバーの CPU コアの数に設定します。サーバーの平均負荷は、ピーク時にこの数値になる傾向があります。サーバーは速度を落とすことなくクライアントにサービスを提供しますが追いつくためにいくつかのリクエストを拒否します. 拒否はサーバー側で「プロセス スロットを適用できません」と記録され、クライアント側で 503 エラーとして表示されます。
  • アプリケーションが完全に CPU バウンドではない (一般的な) ケースでは、たとえば、データベース サーバーからの応答 (または他の I/O またはリモート リソース) をかなりの量待機する場合、FcgidMaxProcesses は、 CPU コア。経験則として、2 倍の CPU コア数から始めて、1 日 (1 週間の方が良い) のピーク平均負荷をチェックします。次に、平均でピークになるまで調整します。負荷 = CPU コアの数。

いずれにせよ、FcgidMaxProcesses のデフォルト値 (1000) は法外です。あなたは愚かな「ab -c100 -n10000」を実行します

念のため、別の言い方をさせてください。サーバーには固定量のリソースがあり、それらの制限に達する可能性があるため、 「プロセススロットを適用できません」というエラーは通常のエラーです。その制限を高いwrtにプッシュすると。サーバーリソースに警告が表示されることはありませんが、サーバーは負荷の下で崩壊します.

ところで、MaxSpareServers と MaxClients は問題とは関係ありません。FastCGI プロセス プールではなく、Apache プロセス プールを規制します。これは別のトピックです。

于 2013-10-06T23:27:25.370 に答える