需启用PHP-FPM status页面并配置Nginx反向代理,再通过计划任务、命令行或宝塔监控模块采集解析idle/active进程数,实现空闲与活跃进程比例的实时监控与可视化。

如果您在宝塔面板中需要掌握PHP进程池的实时运行状态,但无法直观判断空闲进程与活跃进程的比例关系,则可能是由于未启用或未正确解析PHP-FPM状态页面。以下是实现该监控的具体步骤:
一、启用PHP-FPM status页面
PHP-FPM内置status接口可提供进程池的实时统计信息,包括空闲(idle)与活跃(active)进程数量、请求队列长度等关键指标,是监控比例关系的基础前提。
1、登录宝塔面板,进入【网站】→选择对应站点→点击【设置】。
2、在左侧菜单中点击【PHP版本】,确认当前使用的是支持status功能的PHP版本(如PHP 7.4及以上)。
立即学习“PHP免费学习笔记(深入)”;
3、点击【配置文件】选项卡,在打开的php-fpm.conf或www.conf中查找pm.status_path参数行。
4、若该行被注释(以分号;开头),请删除分号;若不存在,请在[www]段落末尾添加:pm.status_path = /status
5、确保ping.path和ping.response也已启用,用于健康检查。
6、保存配置后,点击【重载配置】使生效。
二、配置Nginx反向代理访问status接口
宝塔默认不开放/status路径,需通过Nginx将该路径映射为可访问的HTTP端点,同时限制仅本机或可信IP访问,保障安全。
1、进入【网站】→选择对应站点→点击【配置文件】。
2、在server块内、location /规则之后,插入以下配置:
2、location ~ ^/(status|ping)$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
allow 127.0.0.1;
deny all;
}
3、将其中fastcgi_pass的端口替换为当前PHP服务实际监听端口(可在【PHP管理】→【设置】中查看)。
4、保存配置,点击【重载配置】刷新Nginx。
5、在浏览器中访问http://您的域名/status?full,即可查看完整状态页。
三、通过宝塔计划任务定时采集并解析状态数据
利用Linux定时任务调用curl获取/status接口返回内容,再通过脚本提取idle processes与active processes数值,实现比例自动化监控。
1、进入宝塔【计划任务】→点击【添加计划任务】。
2、任务类型选择【Shell脚本】。
3、执行周期设为每分钟一次(如:* * * * *)。
4、脚本内容填写如下:
4、curl -s "http://127.0.0.1/status?json" | awk -F': ' '/idle processes/ {idle=$2} /active processes/ {active=$2} END {if (idle+active>0) print "idle:" idle ", active:" active ", ratio:" int(100*idle/(idle+active)) "%"}' >> /www/server/panel/logs/php_pool_ratio.log
5、点击【添加任务】,系统将每分钟追加一行记录到日志文件中。
6、可通过【文件】→定位到/www/server/panel/logs/php_pool_ratio.log查看历史比例变化。
四、使用宝塔终端命令行实时查看进程池状态
直接在SSH终端中调用PHP-FPM自带的status输出,适用于快速诊断当前瞬时比例,无需依赖Web访问。
1、通过宝塔【终端】或SSH连接服务器。
2、执行命令:sudo /www/server/php/84/sbin/php-fpm -t(请将84替换为实际PHP版本号,如74、80、82等)验证配置有效性。
3、执行命令:sudo /www/server/php/84/sbin/php-fpm -m确认fpm模块已加载。
4、执行命令:sudo /www/server/php/84/sbin/php-fpm --status(部分版本需配合-c /www/server/php/84/etc/php-fpm.conf指定配置路径)。
5、输出中查找idle processes与active processes字段值,手动计算比例:idle / (idle + active) × 100%。
五、借助宝塔【监控】模块结合自定义脚本可视化展示
将status接口数据注入宝塔监控图表,实现空闲/活跃比例的图形化趋势追踪,便于发现长期波动规律。
1、创建脚本文件:/www/server/panel/script/get_php_pool_ratio.sh。
2、写入内容:
#!/bin/bash
STATUS=$(curl -s "http://127.0.0.1/status?json" 2>/dev/null)
IDLE=$(echo "$STATUS" | grep '"idle processes":' | awk -F': ' '{print $2}' | tr -d ',')
ACTIVE=$(echo "$STATUS" | grep '"active processes":' | awk -F': ' '{print $2}' | tr -d ',')
if [ -n "$IDLE" ] && [ -n "$ACTIVE" ] && [ $((IDLE+ACTIVE)) -gt 0 ]; then
RATIO=$((IDLE * 100 / (IDLE + ACTIVE)))
echo $RATIO
else
echo 0
fi
3、赋予执行权限:chmod +x /www/server/panel/script/get_php_pool_ratio.sh。
4、进入【监控】→【自定义监控】→【添加监控项】。
5、名称填“PHP空闲比例”,类型选“Shell脚本”,脚本路径填/www/server/panel/script/get_php_pool_ratio.sh,单位填“%”。
6、保存后,该监控项将出现在【监控】首页图表中,持续绘制空闲进程占比曲线。











