Cómo evitar que PHP-FPM consuma demasiada RAM en Linux

Cómo evitar que PHP-FPM consuma demasiada RAM en Linux

Si ha implementado un LEMP. ( Linux. NGINX. MySQL/MariaDB. y PHP., entonces probablemente esté utilizando el proxy FastCGI. dentro de NGINX. (como un servidor HTTP), para el procesamiento de PHP. PHP-FPM. (un acrónimo de FastCGI Process Manager. es una implementación alternativa de PHP FastCGI. ampliamente utilizada y de alto rendimiento.

Aquí están las guías útiles sobre cómo configurar LEMP Stack. en Linux.

  • Cómo instalar LEMP Stack con PhpMyAdmin en Ubuntu 20.04
  • Cómo instalar el servidor LEMP en CentOS 8
  • Cómo instalar LEMP en el servidor Debian 10

Recientemente, todos nuestros sitios web PHP. en uno de nuestros servidores web LEMP. se volvieron lentos y finalmente dejaron de responder al iniciar sesión en el servidor. descubrimos que el sistema se estaba quedando sin RAM: PHP-FPM. había consumido la mayor parte de la RAM, como se indica en la siguiente captura de pantalla (miradas-herramienta de monitoreo del sistema).

$ glances  Glances-Herramienta de monitoreo del sistema  Glances-Herramienta de supervisión del sistema Glances-Herramienta de monitoreo del sistema

En este artículo, mostraremos cómo evitar que PHP-FPM. consuma demasiado o todo la memoria de su sistema ( RAM. en Linux. Al final de esta guía, aprenderá cómo reducir el consumo de memoria de PHP-FPM. en un 50% o más.

Reducir el uso de memoria de PHP-FPM

Después de investigar un poco en Internet, descubrimos que necesitábamos reconfigurar el administrador de procesos PHP-FPM. y ciertos aspectos del mismo para reducir el consumo de memoria de PHP-FPM en el archivo de configuración del grupo.

freestar.config.enabled_slots.push

El grupo predeterminado es www. y su archivo de configuración se encuentra en /etc/php-fpm.d/www.conf. (en CentOS/RHEL/Fedora. o /etc/php/7.4/fpm/pool.d/www.conf. (en Ubuntu/Debian/Mint. .

$ sudo vim/etc/php-fpm.d/www.conf [En CentOS/RHEL/Fedora] $ sudo vim/etc/php/7.4/fpm/pool.d/www.conf [En Ubuntu/Debian/Mint]

Busque las siguientes directivas y establezca su valor para adaptarse a su caso de uso. Para las directivas que están comentadas, debe descomentarlas.

pm = ondemand pm.max_children = 80 pm.process_idle_timeout = 10s pm.max_requests = 200

Expliquemos brevemente las directivas anteriores y sus valores. La directiva pm. determina cómo el administrador de procesos controlará el número de procesos secundarios. El método predeterminado es dinámico. lo que significa que el número de hijos (procesos hijos) se establece dinámicamente en función de algunas otras directivas, incluida pm.max_children. que define el número máximo de hijos que puede estar vivo al mismo tiempo.

El administrador de procesos más ideal es el esquema bajo demanda. donde no se crean procesos secundarios al inicio, sino que se generan bajo demanda. Los procesos secundarios solo se bifurcan cuando se conectan nuevas solicitudes en función de pm.max_children. y pm.process_idle_timeout. que define la cantidad de segundos después de los cuales se eliminará un proceso inactivo.

Por último, pero no menos importante, debemos establecer el parámetro pm.max_requests. que define el número de solicitudes que debe ejecutar cada proceso hijo antes de volver a generar. Tenga en cuenta que este parámetro también se puede utilizar como una solución para las pérdidas de memoria en bibliotecas de terceros.

Referencia. una mejor manera de ejecutar PHP-FPM.

Después de realizar estas configuraciones anteriores, noté que el uso de RAM. ahora está bien en nuestro servidor. ¿Tiene alguna idea para compartir relacionada con este tema o preguntas? Comuníquese con nosotros a través del formulario de comentarios a continuación.