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


PHP-FPM(FastCGI 进程管理器)是 PHP 作为 FastCGI 进程管理器的一种流行实现。它提供了比传统 PHP 实现显着的性能改进,并且广泛用于高流量网站。Nginx 是一款流行的 Web 服务器和反向代理,可用于通过 PHP-FPM 提供 PHP 应用程序。在本文中,我们将讨论如何在 Nginx 中启用和监控 PHP-FPM 状态。

启用 PHP-FPM 状态页面

PHP-FPM 带有一个内置的状态页面,提供有关 PHP-FPM 进程当前状态的实时信息。在 Nginx 中启用 PHP-FPM 状态页面是一个简单的过程。

首先,使用您喜欢的文本编辑器打开 PHP-FPM 配置文件。此文件的位置可能因系统配置而异。例如,在 Ubuntu 上,该文件位于 /etc/php/7.4/fpm/pool.d/www.conf。

接下来,取消以下行的注释:

pm.status_path = /status
ping.path = /ping

这些行启用状态和 ping 页面。保存更改并重新启动 PHP-FPM 服务:

sudo service php7.4-fpm restart

接下来,编辑 PHP 应用程序的 Nginx 配置文件。将以下 location 块添加到 server 块中:

location ~ ^/(status|ping)$ {
   access_log off;
   allow 127.0.0.1;
   deny all;
   include fastcgi_params;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   fastcgi_param SCRIPT_NAME $fastcgi_script_name;
   fastcgi_param REQUEST_METHOD $request_method;
   fastcgi_param QUERY_STRING $query_string;
   fastcgi_param CONTENT_TYPE $content_type;
   fastcgi_param CONTENT_LENGTH $content_length;
   fastcgi_pass 127.0.0.1:9000;
}

此 location 块仅允许从 localhost 访问状态和 ping 页面。您可以更改 IP 地址以允许从其他 IP 地址访问。

保存更改并重新加载 Nginx 配置:

sudo service nginx reload

您现在可以通过访问 http://your-domain.com/status 访问 PHP-FPM 状态页面,通过访问 http://your-domain.com/ping 访问 ping 页面。如果一切配置正确,您应该会看到一个包含有关 PHP-FPM 进程的实时信息的页面。

监控 PHP-FPM 状态

监控 PHP-FPM 状态页面是维护健康 PHP 应用程序的重要组成部分。它允许您检测和诊断 PHP-FPM 进程的问题。

一种监控 PHP-FPM 状态页面的方法是使用 curl 等工具。例如,要获取状态信息,您可以运行以下命令:

curl http://your-domain.com/status

此命令将在您的终端中输出状态信息。

另一种监控 PHP-FPM 状态页面的方法是使用 Nagios、Zabbix 或 Prometheus 等监控工具。这些工具允许您根据 PHP-FPM 进程的状态设置警报和通知。

除了使用 curl 和 Nagios 等工具监控 PHP-FPM 状态页面外,还有几种基于 Web 的监控工具可用。一种流行的工具是 PHP-FPM 状态页面脚本,它是一个基于 Web 的脚本,提供有关 PHP-FPM 进程的详细概述。此脚本可以轻松安装在您的服务器上,并配置为提供 PHP-FPM 进程的实时监控。

另一种选择是使用 PHP-FPM 的内置监控功能。PHP-FPM 带有几个内置监控工具,包括我们之前启用的 pm.status_path 和 ping.path 指令。这些工具提供有关 PHP-FPM 进程状态的详细信息,包括活动进程数、空闲进程数和处理的总请求数。

您还可以使用 pm.status_listen 指令为 PHP-FPM 状态监控启用 TCP/IP 套接字。这允许您使用 telnet 等工具连接到套接字并实时查看状态信息。

需要注意的是,虽然监控 PHP-FPM 状态页面对于维护健康的 PHP 应用程序至关重要,但监控其他指标(如 CPU 和内存使用情况)也很重要。这些指标可以帮助您识别性能瓶颈并优化 PHP-FPM 配置以获得更好的性能。

另一种监控 PHP-FPM 状态的方法是使用 New Relic 或 Datadog 等第三方监控服务。这些服务可以提供有关 PHP 应用程序性能的详细信息,包括与 PHP-FPM 进程相关的指标。

例如,New Relic 为 PHP 应用程序提供实时性能监控和诊断。它可以配置为监控 PHP-FPM 进程并提供有关 CPU 和内存使用情况以及其他重要指标的见解。它还可以在性能阈值超过时发送警报和通知,帮助您主动识别和解决性能问题。

Datadog 是另一种流行的监控服务,可用于监控 PHP-FPM 进程。它提供对 PHP 应用程序性能的实时可见性,包括与 PHP-FPM 进程相关的详细指标。它还可以配置为在性能阈值超过时发送警报和通知。

除了监控 PHP-FPM 状态外,优化 PHP-FPM 配置以获得更好的性能也很重要。一个重要的配置参数是 pm.max_children 指令,它确定可以生成多少个 PHP-FPM 子进程来处理传入请求。将此值设置得太高会导致资源耗尽,而设置得太低会导致由于排队时间过长而导致性能下降。

另一个重要的配置参数是 pm.max_requests 指令,它确定每个 PHP-FPM 子进程在回收之前可以处理的最大请求数。将此值设置得太高会导致内存泄漏和不稳定,而设置得太低会导致不必要的进程回收和开销。

在配置 PHP-FPM 时,还需要考虑服务器上可用的资源。例如,如果您可用的内存有限,则可能需要降低 pm.max_children 的值以防止资源耗尽。同样,如果您可用的 CPU 资源有限,则可能需要调整 pm.process_idle_timeout 指令以防止空闲进程消耗宝贵的 CPU 周期。

最后,需要注意的是,启用 PHP-FPM 状态也可能存在安全隐患。状态页面可以向攻击者提供有价值的信息,包括活动进程数和处理的总请求数。务必确保仅从受信任的 IP 地址访问状态页面,并使用身份验证和授权正确保护访问。

监控和优化 PHP-FPM 的另一个重要方面是分析 PHP 错误日志。PHP 错误日志可以提供有关可能影响 PHP 应用程序性能和稳定性的潜在问题和错误的有价值的见解。通过分析这些日志,您可以识别和诊断与 PHP-FPM 进程相关的问题,例如内存泄漏、段错误和其他错误。

您可以通过在 PHP 配置文件中设置 error_log 指令来配置 PHP 错误记录。默认情况下,PHP 将错误记录到系统错误日志,但您可以将其配置为将错误记录到特定文件或位置,以便于分析和监控。

除了错误日志外,监控其他系统和应用程序日志以查找可能影响 PHP-FPM 进程的潜在问题也很重要。例如,您可能需要监控 Nginx 访问日志和错误日志以识别与请求和响应相关的潜在问题。

优化 PHP-FPM 性能的另一种方法是使用操作码缓存。操作码缓存可以通过缓存编译后的 PHP 代码并减少每次请求编译代码的开销来显着提高 PHP 性能。流行的操作码缓存解决方案包括 APCu、OpCache 和 XCache。

结论

在 Nginx 中启用和监控 PHP-FPM 状态页面是维护健康 PHP 应用程序的一种简单有效的方法。按照本文中概述的步骤,您可以轻松启用 PHP-FPM 状态页面并使用您首选的工具进行监控。

更新于: 2023 年 5 月 15 日

3K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告