如何在 Nginx 中启用和监控 PHP-FPM 状态
PHP-FPM(FastCGI 进程管理器)是一种替代的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
现在打开浏览器并输入 URLhttp://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进程状态(空闲、运行等)。
- 开始时间——流程开始的日期和时间。
- 启动时间– 自进程启动以来的秒数。
- 请求——该进程已处理的请求数。
- 请求时长– 请求的时长(以 µs 为单位)。
- 请求方法——请求方法(GET、POST 等)。
- 请求 URI – 带有查询字符串的请求 URI。
- 内容长度– 请求的内容长度(仅限 POST)。
- 用户– 用户(PHP_AUTH_USER)(如果未设置则为“-”)。
- 脚本– 调用的主脚本(如果未设置则为‘-’)。
- 最后一个请求 cpu – %cpu 最后消耗的请求(请注意,如果进程不处于空闲状态,它始终为 0)。
- 最后请求内存– 最后请求消耗的最大内存量(如果进程不处于空闲状态,则始终为 0)。
现在就这样了!在本文中,我们解释了如何在 Nginx Web 服务器下启用php-fpm状态页面。使用下面的反馈表与我们分享您的想法。