温馨提示×

ubuntu php-fpm怎样监控状态

小樊
35
2026-10-21 22:32:24
栏目: 编程语言

在 Ubuntu 上监控 PHP‑FPM 的状态,常见做法有下面几种,从最简单到生产级监控逐步说明。


一、开启 PHP‑FPM 状态页(最常用)

1. 启用 status 配置

PHP‑FPM 默认带有一个 status pool 配置,通常位于:

/etc/php/*/fpm/pool.d/www.conf

找到并修改(或取消注释):

pm.status_path = /status

如果你使用 TCP socket 或不同 pool,确保对应 pool 有该配置。


2. 配置 Nginx 访问状态页

编辑 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>

3. 重启服务

sudo systemctl restart php-fpm
sudo systemctl restart nginx

4. 查看状态

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、请求脚本、运行时间等)。


二、命令行直接监控(无需 Web)

1. 查看 PHP‑FPM 进程

ps aux | grep php-fpm

2. 查看 socket / 端口

ss -pl | grep php-fpm

3. 查看日志

tail -f /var/log/php*fpm.log

三、系统级监控(推荐生产环境)

1. systemd 状态

systemctl status php-fpm

2. 资源占用

top -p $(pgrep php-fpm | tr '\n' ',' | sed 's/,$//')

四、专业监控方案(运维级)

✅ Prometheus + php-fpm-exporter

适合 Kubernetes / 云服务器

  • 使用 php-fpm-exporter
  • 抓取 /status?json

示例:

php-fpm-exporter --phpfpm.scrape-uri tcp://127.0.0.1:9000/status

✅ Zabbix / Grafana

  • Zabbix 自带 PHP‑FPM 模板
  • Grafana + Prometheus 可视化

五、常见监控指标说明

指标 含义
listen queue 等待处理的请求数(高说明不够)
active processes 正在处理请求的进程
idle processes 空闲进程
accepted conn 总请求数
slow requests 慢请求(需开启 slow log)

六、开启慢日志(排查卡顿)

slowlog = /var/log/php-fpm-slow.log
request_slowlog_timeout = 5s

如果你告诉我:

  • 你用的是 Nginx 还是 Apache
  • PHP 版本
  • 是 单机还是容器

我可以给你一份可直接复制的配置。

0 踩