如何在Nginx中启用和监视PHP-FPM状态

PHP-FPM是另一种PHP FastCGI实现,它带有许多额外的功能,可用于接收高流量的网站。

PHP-FPMFastCGI流程管理器 )是另一种PHP FastCGI实现,它带有许多对任何规模的网站都有用的额外功能,特别是那些接收高流量的网站。

它常用于LEMPLinux Nginx MySQL / MariaDB PHP ); Nginx使用PHP FastCGI在网络上提供动态HTTP内容。 它被用于为互联网上的Web服务器上的数百个网站提供数百万个PHP请求。

另请参阅如何启用NGINX状态页面

php-fpm的一个有用功能是内置状态页面,可以帮助您监控其运行状况。 在本文中,我们将展示如何在Linux上启用PHP-FPM状态页面。

如何在Linux中启用PHP-FPM状态页面

首先打开php-fpm配置文件并启用状态页面,如图所示。

$ 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

在此文件中,查找并取消注释变量pm.status_path = /status ,如屏幕截图所示。

启用PHP-FPM状态页面

启用PHP-FPM状态页面

保存更改并退出文件。

接下来,通过运行以下命令检查PHP-FPM配置文件是否存在任何错误。

$ sudo php-fpm -t
OR
$ sudo php7.2-fpm -t
检查PHP-FPM配置文件

检查PHP-FPM配置文件

然后重新启动PHP-FPM服务以应用最近的更改。

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

接下来,编辑默认服务器块虚拟主机 )配置文件,并在其中添加下面的位置块 例如,在测试系统上,默认服务器块的配置文件是/etc/nginx/conf.d/default.conf ,用于站点test.lab

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

这是要添加的位置块 在此配置中,出于安全原因,我们仅允许使用指令allow 127.0.0.1访问localhost中的PHP-FPM进程状态。

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;
}

保存文件并关闭它。

然后重新启动Nginx服务器以应用上述更改。

$ sudo systemctl restart nginx

现在打开浏览器并输入URL http://test.lab/status以查看PHP-FPM进程状态。

查看PHP-FPM状态页面

查看PHP-FPM状态页面

或者,使用curl程序 ,如下所示,其中-L标志指定页面的位置。

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

默认情况下,状态页仅打印摘要或短状态。 要查看每个池进程的状态,请在查询字符串中传递“full” ,例如:

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

您可以定义输出格式(JSON,HTML或XML),如图所示。

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

以下是每个进程在php-fpm完整状态中返回的值:

  • pid - 进程的PID。
  • 状态进程状态(空闲,运行等)。
  • 开始时间 - 进程开始的日期和时间。
  • 从此开始 - 自进程启动以来的秒数。
  • requests - 进程已服务的请求数。
  • 请求持续时间 - 以μs为单位的持续时间。
  • 请求方法 - 请求方法(GET,POST等)。
  • 请求URI - 请求带有查询字符串的URI。
  • 内容长度 - 请求的内容长度(仅限POST)。
  • user - user(PHP_AUTH_USER)(如果未设置,则为“ - ”)。
  • script - 调用主脚本(如果未设置,则为' - ')。
  • 最后一个请求cpu - %cpu消耗的最后一个请求(注意,如果进程不处于空闲状态,它总是为0)。
  • 最后一个请求内存 - 上次请求消耗的最大内存量(如果进程未处于空闲状态,则始终为0)。

这就是现在! 在本文中,我们已经解释了如何在Nginx Web服务器下启用php-fpm状态页面。 使用下面的反馈表与我们分享您的想法。