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 Lemplo (Linux, Nginx, Mysql/mariadb, y Php) pila, entonces probablemente estés usando Fastcgi proxy dentro Nginx (como servidor HTTP), para el procesamiento de PHP. Php-FPM (un acrónimo de Fastcgi Process Manager) es una alternativa de alto rendimiento y de alto rendimiento PHP Fastcgi implementación.

Aquí están las guías útiles para configurar Pila 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 Debian 10 Server

Recientemente, todos nuestros Php sitios web en uno de nuestros Lemplo Los servidores web se hicieron 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 (Glances - Herramienta de monitoreo del sistema).

$ miradas 
Miradas - herramienta de monitoreo del sistema

En este artículo, mostraremos cómo prevenir Php-FPM de consumir demasiado o toda la memoria de su sistema (RAM) en Linux. Al final de esta guía, aprenderá a reducir Php-FPM consumo de memoria en un 50% o más.

Reducir el uso de la memoria PHP-FPM

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

El grupo predeterminado es www y su archivo de configuración se encuentra en /etc/php-fpm.D/www.confusión (en Centos/Rhel/Fedora) o /etc/php/7.4/fpm/piscina.D/www.confusión (en Ubuntu/Debian/Mint).

$ sudo vim /etc /php-fpm.D/www.conf [en Centos/Rhel/Fedora] $ sudo vim/etc/php/7.4/fpm/piscina.D/www.conf [en Ubuntu/Debian/Mint] 

Encuentre las siguientes directivas y configure su valor para adaptarse a su caso de uso. Para las directivas que se comentan, debes desencadenarlas.

PM = Ondemand PM.max_children = 80 pm.process_idle_timeout = 10s pm.max_requests = 200 

Expliquemos brevemente las directivas anteriores y sus valores. El pm La directiva determina cómo el gerente de proceso controlará el número de procesos infantiles. El método predeterminado es dinámica, lo que significa que el número de niños (procesos infantiles) se establece dinámicamente dependiendo de otras directivas, incluidas pm.max_children que define el número máximo de niños que pueden estar vivos al mismo tiempo.

El gerente de proceso más ideal es el Bajo demanda esquema donde no se crean procesos infantiles al inicio, pero se generan a pedido. Los procesos infantiles solo se bifurcarán cuando las nuevas solicitudes se conectarán según el pm.max_children y pm.proceso_idle_timeout que define el número de segundos después de los cuales se matará un proceso inactivo.

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

Referencia: Una mejor manera de ejecutar PHP-FPM.

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