Cómo habilitar y monitorear el estado de PHP-FPM en Nginx


PHP-FPM ( FastCGI Process Manager ) es una implementación alternativa de PHP FastCGI que viene con una serie de funciones adicionales útiles para sitios web de cualquier tamaño. Particularmente los sitios que reciben alto tráfico.

Se usa comúnmente en la pila LEMP ( Linux Nginx MySQL/MariaDB PHP ); Nginx utiliza PHP FastCGI para servir contenido dinámico HTTP en una red. Se está utilizando para atender a millones de solicitudes PHP de cientos de sitios web en servidores web en Internet.

Una de las características útiles de php-fpm es la página de estado incorporada, que puede ayudarlo a controlar su estado. En este artículo, mostraremos cómo habilitar la página de estado PHP-FPM en Linux.

Cómo habilitar la página de estado de PHP-FPM en Linux

Primero abra el archivo de configuración php-fpm y active la página de estado como se muestra.

$ sudo vim /etc/php-fpm.d/www.conf 
OR
$ sudo vim /etc/php/7.2/fpm/pool.d/www.conf	#for PHP versions 5.6, 7.0, 7.1

Dentro de este archivo, encuentre y descomente la variable pm.status_path =/status como se muestra en la captura de pantalla.

Guarde los cambios y salga del archivo.

A continuación, verifique que el archivo de configuración PHP-FPM no tenga errores ejecutando el siguiente comando.

$ sudo php-fpm -t
OR
$ sudo php7.2-fpm -t

Luego reinicie el servicio PHP-FPM para aplicar los cambios recientes.

$ sudo systemctl restart php-fpm
OR
$ sudo systemctl restart php7.2-fpm

A continuación, edite el archivo de configuración predeterminado bloque del servidor ( host virtual ) y agregue el bloque de ubicación a continuación. Por ejemplo, en el sistema de prueba, el archivo de configuración del bloque del servidor predeterminado es /etc/nginx/conf.d/default.conf para el sitio test.lab .

$ sudo vim /etc/nginx/conf.d/default.conf 

Aquí está el bloque de ubicación que se agregará. En esta configuración, solo hemos permitido el acceso al estado del proceso PHP-FPM dentro del host local utilizando la directiva permitir 127.0.0.1 por razones de seguridad.

location ~ ^/(status|ping)$ {
        allow 127.0.0.1;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        include fastcgi_params;
        #fastcgi_pass 127.0.0.1:9000;
        fastcgi_pass   unix:/var/run/php7.2-fpm.sock;
}

Guarde el archivo y ciérrelo.

Luego reinicie el servidor Nginx para aplicar los cambios anteriores.

$ sudo systemctl restart nginx

Ahora abra un navegador y escriba la URL http: //test.lab/status para ver el estado de su proceso PHP-FPM.

Alternativamente, use el programa de curvatura de la siguiente manera, donde la marca -L especifica la ubicación de la página.

$ curl -L http://test.lab/status

De forma predeterminada, la página de estado solo imprime un resumen o un estado breve. Para ver el estado de cada proceso de grupo, pase "completo" en la cadena de consulta, por ejemplo:

http://www.foo.bar/status?full

Puede definir el formato de salida (JSON, HTML o XML) como se muestra.

http://www.foo.bar/status?json&full
http://www.foo.bar/status?html&full
http://www.foo.bar/status?xml&full

A continuación se muestran los valores devueltos en el estado completo de php-fpm , para cada proceso:

  • pid – PID of the process.
  • state process status (idle, running, etc.).
  • start time – date and time the process has started.
  • start since – number of seconds since the process has started.
  • requests – number of requests the process has served.
  • request duration – duration in µs of the requests.
  • request method – request method (GET, POST, etc.).
  • request URI – request URI with the query string.
  • content length – content length of the request (only with POST).
  • user – user (PHP_AUTH_USER) (or ‘-‘ if not set).
  • script – main script called (or ‘-‘ if not set).
  • last request cpu – %cpu the last request consumed (note that it’s always 0 if the process is not in Idle state).
  • last request memory – max amount of memory the last request consumed (it’s always 0 if the process is not in Idle state).

¡Eso es todo por ahora! En este artículo, hemos explicado cómo habilitar la página de estado php-fpm en el servidor web Nginx. Utilice el formulario de comentarios a continuación para compartir sus opiniones con nosotros.