在 Ubuntu 上监控 PHP‑FPM 的状态,常见做法有下面几种,从最简单到生产级监控逐步说明。
PHP‑FPM 默认带有一个 status pool 配置,通常位于:
/etc/php/*/fpm/pool.d/www.conf
找到并修改(或取消注释):
pm.status_path = /status
如果你使用 TCP socket 或不同 pool,确保对应 pool 有该配置。
编辑 Nginx 站点配置:
location = /status {
fastcgi_pass unix:/run/php/php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
allow 127.0.0.1;
deny all;
}
或 Apache:
<Location /status>
SetHandler "proxy:unix:/run/php/php-fpm.sock|fcgi://localhost/status"
Require local
</Location>
sudo systemctl restart php-fpm
sudo systemctl restart nginx
curl http://127.0.0.1/status
示例输出:
pool: www
process manager: dynamic
start time: ...
accepted conn: 12345
listen queue: 0
active processes: 4
idle processes: 6
curl http://127.0.0.1/status?full
可看到每个 PHP 进程状态(PID、请求脚本、运行时间等)。
ps aux | grep php-fpm
ss -pl | grep php-fpm
tail -f /var/log/php*fpm.log
systemctl status php-fpm
top -p $(pgrep php-fpm | tr '\n' ',' | sed 's/,$//')
适合 Kubernetes / 云服务器
php-fpm-exporter/status?json示例:
php-fpm-exporter --phpfpm.scrape-uri tcp://127.0.0.1:9000/status
| 指标 | 含义 |
|---|---|
| listen queue | 等待处理的请求数(高说明不够) |
| active processes | 正在处理请求的进程 |
| idle processes | 空闲进程 |
| accepted conn | 总请求数 |
| slow requests | 慢请求(需开启 slow log) |
slowlog = /var/log/php-fpm-slow.log
request_slowlog_timeout = 5s
如果你告诉我:
我可以给你一份可直接复制的配置。