Ist es möglich, die Anzahl gleichzeitiger Anfragen an Apache zu begrenzen und die überzähligen Anfragen zu puffern (anstatt 503 zurückzugeben)?

Ist es möglich, die Anzahl gleichzeitiger Anfragen an Apache zu begrenzen und die überzähligen Anfragen zu puffern (anstatt 503 zurückzugeben)?

Ich habe eine Website, die von Apache 2.4 mit PHP-FPM bereitgestellt wird. Die Generierung einiger Seiten dauert einige Sekunden. Von Zeit zu Zeit versucht ein Bot oder Crawler, viele dieser Seiten auf einmal herunterzuladen. Für alle Anfragen werden PHP-Prozesse gestartet und der Server wird sehr langsam, weil ihm der Arbeitsspeicher ausgeht.

Ich kann die Anzahl der PHP-Prozesse oder die Anzahl gleichzeitiger Verbindungen (und sogar die Anzahl gleichzeitiger Verbindungen von einer einzelnen IP mit mod_qos) begrenzen, aber dann führen weitere Anfragen (oder zumindest weitere Anfragen von dieser IP) sofort zu einem 503-Ergebnis. Ist es möglich, die überzähligen Anfragen in einem Backlog zu behalten und sie zu verarbeiten, wenn die vorherigen Anfragen abgeschlossen sind?

Antwort1

Installieren Sie Nginx als Reverse-Proxy und wenden Sie dort die Ratenbegrenzung gemäß diesem Handbuch an:https://www.nginx.com/blog/rate-limiting-nginx/

Ich möchte nicht alle auf dieser Seite dargestellten Funktionen kopieren, es gibt viele und Sie sollten das besser selbst lesen. Das ist die offizielle Blog-Seite, also ist es unwahrscheinlich, dass sie verschwindet.

verwandte Informationen