宝塔面板如何监控PHP进程池的空闲与活跃比例?

来源:编程学习作者:高永康头衔:资深程序员
导读:本期聚焦于小伙伴创作的《宝塔面板如何监控PHP进程池的空闲与活跃比例?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《宝塔面板如何监控PHP进程池的空闲与活跃比例?》有用,将其分享出去将是对创作者最好的鼓励。

什么是PHP进程池的空闲与活跃比例

PHP进程池是php-fpm服务管理的一组工作进程,其中活跃进程指的是正在处理用户请求的进程,空闲进程则是处理完请求处于等待状态的进程。两者的比例直接反映了当前进程池的负载情况,如果活跃比例长期过高,说明进程数量不足,需要增加进程池的最大进程数;如果空闲比例长期过高,则说明进程配置过多,存在资源浪费。

宝塔面板如何监控PHP进程池的空闲与活跃比例?

通过宝塔面板自带的监控功能查看

宝塔面板内置了基础的进程监控模块,可以快速查看php-fpm的进程状态:

  • 登录宝塔面板,进入左侧导航栏的「软件商店」,找到已安装的PHP版本,点击右侧的「设置」按钮
  • 在弹出的设置窗口中,切换到「状态」选项卡,这里会显示php-fpm的运行状态、总进程数、内存占用等基础信息
  • 部分版本的宝塔面板还会在「监控」页面的进程监控板块,单独展示php-fpm的进程数量变化趋势,可以直观看到进程数量的波动情况

不过面板自带的状态信息不会直接拆分空闲和活跃进程的数量,需要更详细的数据可以参考下面的方法。

开启php-fpm状态页面获取详细数据

php-fpm本身提供了内置的状态页面,开启后可以返回所有进程的详细状态,包括每个进程是空闲还是活跃:

步骤1:修改php-fpm配置文件

在宝塔面板的PHP设置中,切换到「配置修改」选项卡,找到pm.status_path配置项,如果没有则手动添加,设置路径为/fpm-status,同时确认ping.path配置没有被占用,修改后重启php-fpm服务:

; 开启fpm状态页面
pm.status_path = /fpm-status
; 允许访问状态页面的IP,这里设置为允许所有,生产环境建议限制指定IP
listen.allowed_clients = 127.0.0.1

步骤2:配置Nginx访问规则

如果是Nginx作为Web服务,需要在对应站点的配置文件中添加状态页面的访问规则,允许通过特定路径访问状态数据:

location = /fpm-status {
    # 只允许本地访问,避免状态信息泄露
    allow 127.0.0.1;
    deny all;
    # 转发到php-fpm的状态路径
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    # 这里的sock路径需要和php-fpm的监听路径一致,宝塔默认路径如下
    fastcgi_pass unix:/tmp/php-cgi-74.sock;
}

步骤3:查询状态数据

配置完成后,可以通过命令行访问状态页面,获取详细的进程信息:

# 访问状态页面,获取纯文本格式的结果
curl http://127.0.0.1/fpm-status?plain&full

返回的结果中,每个进程的状态会标注为Idle(空闲)或者Running(活跃),可以统计两者的数量计算比例:

pool:                 www
process manager:      dynamic
start time:           01/Jan/2024:10:00:00 +0800
start since:          3600
accepted conn:        1200
listen queue:         0
max listen queue:     2
listen queue len:     128
idle processes:       5
active processes:     3
total processes:      8
max active processes: 6

上面的结果中,空闲进程是5个,活跃进程是3个,空闲活跃比例就是5:3,空闲占比62.5%,活跃占比37.5%。

通过命令行工具直接统计进程状态

如果不想配置状态页面,也可以通过系统命令行直接统计php-fpm的进程状态:

# 统计所有php-fpm进程的状态,Idle为空闲,Running为活跃
ps -eLf | grep "php-fpm: pool" | awk '{print $12}' | sort | uniq -c

返回的结果会分别显示Idle和Running的进程数量,比如:

  5 Idle
  3 Running

同样可以快速得到两者的数量和比例。

自定义脚本实现自动监控与告警

如果需要长期监控比例变化,还可以编写简单的Shell脚本,定期统计比例并在超出阈值时发送告警:

#!/bin/bash
# 获取空闲进程数
idle_num=$(ps -eLf | grep "php-fpm: pool" | grep -c "Idle")
# 获取活跃进程数
active_num=$(ps -eLf | grep "php-fpm: pool" | grep -c "Running")
# 计算总进程数
total_num=$((idle_num + active_num))
# 避免除以0的错误
if [ $total_num -eq 0 ]; then
    echo "未检测到php-fpm进程"
    exit 1
fi
# 计算活跃比例
active_rate=$(echo "scale=2; $active_num / $total_num * 100" | bc)
echo "当前PHP进程池状态:"
echo "总进程数:$total_num"
echo "空闲进程数:$idle_num"
echo "活跃进程数:$active_num"
echo "活跃进程占比:${active_rate}%"
# 如果活跃占比超过80%,输出告警信息,可对接宝塔的告警接口或者发送邮件
if [ $(echo "$active_rate > 80" | bc) -eq 1 ]; then
    echo "告警:PHP进程池活跃占比过高,建议调整进程池配置"
fi

可以将这个脚本添加到宝塔面板的计划任务中,设置每分钟或者每5分钟执行一次,实现自动化的监控。

根据比例调整进程池配置

拿到空闲活跃比例后,可以根据实际情况调整php-fpm的进程池参数,相关参数在宝塔面板的PHP「配置修改」中可以找到:

参数名作用调整建议
pm.max_children进程池最大进程数如果活跃占比长期超过70%,可以适当调大这个值
pm.start_servers启动时的初始进程数可以设置为最大进程数的1/2左右
pm.min_spare_servers最小空闲进程数保证空闲进程数不低于这个值,避免请求到来时没有可用进程
pm.max_spare_servers最大空闲进程数如果空闲占比长期超过60%,可以适当调小这个值,减少资源占用

调整配置后记得重启php-fpm服务,让配置生效,之后再次观察比例变化,直到比例处于30%-70%的合理区间即可。

宝塔面板PHP进程池进程监控php-fpm空闲活跃比例修改时间:2026-06-10 03:54:34

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。