%3F.png)
Tengo un sitio web servido por Apache 2.4 con PHP-FPM. Algunas páginas tardan unos segundos en generarse. De vez en cuando, algún robot o rastreador intenta descargar muchas de estas páginas a la vez, se generan procesos PHP para todas las solicitudes y el servidor se vuelve muy lento porque se queda sin memoria.
Puedo limitar la cantidad de procesos PHP o la cantidad de conexiones simultáneas (e incluso la cantidad de conexiones simultáneas desde una única IP con mod_qos), pero luego las solicitudes adicionales (o al menos las solicitudes adicionales de esa IP) obtienen inmediatamente un resultado 503. ¿Es posible mantener el exceso de solicitudes en un trabajo pendiente y procesarlas cuando hayan finalizado las solicitudes anteriores?
Respuesta1
Instale un Nginx como proxy inverso y aplique la limitación de velocidad allí, según este manual:https://www.nginx.com/blog/rate-limiting-nginx/
No quiero copiar todas las características descritas en esa página, hay muchas y será mejor que las leas tú mismo. Esa es la página oficial del blog, por lo que es poco probable que desaparezca.