如何在 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 状态页面。使用下面的反馈表与我们分享您的想法。