Apache への同時リクエスト数を制限し、超過リクエストをバッファリングする (503 を返す代わりに) ことは可能ですか?

Apache への同時リクエスト数を制限し、超過リクエストをバッファリングする (503 を返す代わりに) ことは可能ですか?

私は PHP-FPM を搭載した Apache 2.4 で Web サイトを運営しています。一部のページは生成に数秒かかります。時々、ボットやクローラーが一度に大量のページをダウンロードしようとすると、すべてのリクエストに対して PHP プロセスが生成され、メモリ不足によりサーバーが非常に遅くなります。

PHP プロセス数や同時接続数 (mod_qos を使用した単一 IP からの同時接続数も) を制限することはできますが、その後のリクエスト (または少なくともその IP からの追加のリクエスト) はすぐに 503 の結果になります。余分なリクエストをバックログに保持し、前のリクエストが終了したときに処理することは可能ですか?

答え1

このマニュアルに従って、Nginx をリバース プロキシとしてインストールし、そこにレート制限を適用します。https://www.nginx.com/blog/rate-limiting-nginx/

そのページに描かれている機能のすべてをコピーするつもりはありません。たくさんあるので、自分で読んだほうがよいでしょう。それは公式ブログ ページなので、なくなる可能性は低いです。

関連情報