在 Ubuntu 上监控 PHP-FPM,可以从 进程状态、性能、慢日志、系统资源、告警 几个层面来做。下面给你一套从基础到进阶的完整方案。
systemctl status php-fpm
# 或 Ubuntu 常见名称
systemctl status php8.1-fpm
启动 / 重启:
systemctl restart php8.1-fpm
www.confvim /etc/php/8.1/fpm/pool.d/www.conf
取消注释或添加:
pm.status_path = /status
ping.path = /ping
location = /status {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
allow 127.0.0.1;
deny all;
}
location = /ping {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
include fastcgi_params;
allow 127.0.0.1;
deny all;
}
curl http://127.0.0.1/status
输出示例:
pool: www
process manager: dynamic
start time: 01/Jan/2026:10:00:00 +0800
start since: 3600
accepted conn: 12345
listen queue: 0
active processes: 5
total processes: 10
✅ 这是最核心的监控指标
| 指标 | 含义 |
|---|---|
| active processes | 正在处理请求的进程 |
| listen queue | 等待队列(高说明处理不过来) |
| accepted conn | 总请求数 |
| slow requests | 慢请求数 |
⚠️ listen queue > 0 长期存在 = 危险
slowlog = /var/log/php8.1-fpm.slow.log
request_slowlog_timeout = 5s
查看慢请求:
tail -f /var/log/php8.1-fpm.slow.log
top -p $(pgrep -d',' php-fpm)
htop
ps -ylC php-fpm --sort:rss
wget https://github.com/hipages/php-fpm_exporter/releases/download/v2.2.0/php-fpm_exporter_2.2.0_linux_amd64.rpm
php-fpm_exporter --phpfpm.scrape-uri="tcp://127.0.0.1/status"
- job_name: php-fpm
static_configs:
- targets: ["localhost:9253"]
✅ 可监控:
✅ Grafana 有现成 Dashboard
Zabbix 自带模板:
PHP-FPM by HTTPPHP-FPM status监控内容:
| 场景 | 建议 |
|---|---|
| listen queue > 10 | 立即告警 |
| active processes ≈ max children | 扩容 |
| 慢请求突增 | 查 SQL / 代码 |
| PHP-FPM 重启频繁 | 内存泄漏 |
✅ 中小项目
✅ 生产环境
如果你愿意,我可以:
你现在用的是 Ubuntu + Nginx 还是 Apache?PHP 几版本?