网站搜索

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


PHP-FPM (FastCGI Process Manager) 是另一种 PHP FastCGI 实现,它附带了许多对任何规模的网站都有用的额外功能,特别是流量较高的网站。

它通常用于 LEMP (Linux 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 配置文件是否有任何错误。

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

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

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

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

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

这是要添加的位置块。在此配置中,出于安全原因,我们仅允许使用指令 allow 127.0.0.1 访问本地主机内的 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 进程状态。

或者,按如下方式使用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。
  • state 进程状态(空闲、运行等)。
  • 开始时间 – 流程开始的日期和时间。
  • 开始时间 – 自进程开始以来的秒数。
  • 请求 – 进程已处理的请求数。
  • 请求持续时间 – 请求的持续时间(以微秒为单位)。
  • 请求方法 – 请求方法(GET、POST 等)。
  • 请求 URI – 带有查询字符串的请求 URI。
  • 内容长度 – 请求的内容长度(仅适用于 POST)。
  • user – 用户 (PHP_AUTH_USER)(如果未设置则为“-”)。
  • 脚本 – 主脚本调用(如果未设置则为“-”)。
  • 最后一个请求 cpu – 最后一个请求消耗的 %cpu(请注意,如果进程不处于空闲状态,则它始终为 0)。
  • 最后一个请求内存 – 最后一个请求消耗的最大内存量(如果进程不处于空闲状态,则始终为 0)。

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