Можно ли ограничить количество одновременных запросов к Apache и буферизировать избыточные запросы (вместо возврата 503)?

Можно ли ограничить количество одновременных запросов к Apache и буферизировать избыточные запросы (вместо возврата 503)?

У меня есть веб-сайт, обслуживаемый Apache 2.4 с PHP-FPM. Генерация некоторых страниц занимает несколько секунд. Время от времени какой-нибудь бот или краулер пытается загрузить много таких страниц одновременно, для всех запросов запускаются процессы PHP, и сервер становится очень медленным, потому что у него заканчивается память.

Я могу ограничить количество процессов PHP или количество одновременных подключений (и даже количество одновременных подключений с одного IP-адреса с помощью mod_qos), но тогда последующие запросы (или, по крайней мере, последующие запросы с этого IP-адреса) немедленно получат результат 503. Возможно ли сохранить избыточные запросы в бэклоге и обрабатывать их после завершения предыдущих запросов?

решение1

Установите Nginx в качестве обратного прокси-сервера и примените ограничение скорости, как указано в этом руководстве:https://www.nginx.com/blog/rate-limiting-nginx/

Я не хочу копировать все функции, изображенные на этой странице, их много, и вам лучше прочитать это самостоятельно. Это официальная страница блога, так что вряд ли она пойдет.

Связанный контент