GNU/Linux >> Tutoriales Linux >  >> Ubuntu

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é usando FastCGI proxy dentro de NGINX (como un servidor HTTP), para el procesamiento de PHP. PHP-FPM (un acrónimo de FastCGI Process Manager ) es una alternativa ampliamente utilizada y de alto rendimiento PHP FastCGI implementación.

Estas son las guías útiles para 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 PHP sitios web en uno de nuestros LEMP los servidores web 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

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

Reducir el uso de memoria PHP-FPM

Después de investigar un poco en Internet, descubrimos que necesitábamos reconfigurar el PHP-FPM administrador de procesos y ciertos aspectos del mismo 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.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             [On CentOS/RHEL/Fedora]
$ sudo vim /etc/php/7.4/fpm/pool.d/www.conf    [On Ubuntu/Debian/Mint]

Encuentre 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. Las pm La directiva determina cómo el administrador de procesos controlará la cantidad de procesos secundarios. El método predeterminado es dinámico , lo que significa que la cantidad de elementos secundarios (procesos secundarios) se establece dinámicamente en función de algunas otras directivas, incluidas pm.max_children que define el número máximo de niños que pueden estar vivos al mismo tiempo.

El gestor de procesos ideal es el ondemand esquema en el que no se crean procesos secundarios al inicio, sino que se generan a pedido. Los procesos secundarios solo se bifurcan cuando las nuevas solicitudes se conectan 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 configurar las pm.max_requests parámetro que define el número de solicitudes que debe ejecutar cada proceso secundario antes de volver a generarse. Tenga en cuenta que este parámetro también se puede usar como una solución para las fugas de memoria en bibliotecas de terceros.

Referencia :Una mejor forma de ejecutar PHP-FPM.

Después de realizar estas configuraciones anteriores, noté RAM el uso 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.


Ubuntu
  1. Linux:¿cómo ejecutar un gestor de arranque desde Linux?

  2. ¿Cómo evitar que Windows 10 dañe el superbloque Ext4 cada vez?

  3. ¿Cómo evitar que el sistema deje de responder cuando se golpea (fuera de Ram)?

  4. ¿Cómo evitar que los registros se vuelvan demasiado grandes?

  5. ¿Cómo evitar programáticamente que la computadora Linux duerma o active el protector de pantalla?

Cómo mostrar datos de un archivo de texto en Linux

¿Cuánta RAM está instalada en su sistema Ubuntu?

Cómo desinstalar aplicaciones de Ubuntu Linux

Cómo desinstalar programas de Ubuntu Linux

Ubuntu:¿cómo evitar que Firefox se actualice a la versión 57 en Ubuntu 16.04?

¿Cómo comprobar si hay errores en RAM a través de Linux?