宝塔面板设置 PHP 进程数建议优先使用面板内置的“性能调整”功能,或手动修改 PHP-FPM 配置文件中的 pm.max_children 参数。该操作适用于解决 502 Bad Gateway 错误、高并发响应慢或内存占用异常场景,风险边界在于进程数设置过高会耗尽物理内存导致 MySQL 或系统 OOM 崩溃。
先说结论:手动计算需预留 50% 内存给 MySQL 和系统,优先使用面板一键优化。
- 适合:服务器内存不足、频繁出现 502 错误或需要提升并发承载能力
- 先做:备份当前 PHP 配置文件并使用面板“性能调整”估算值
- 再验证:观察
free -m内存剩余及 Nginx/PHP 错误日志
命令速用版
面板操作路径:网站 -> PHP-版本号 -> 性能调整 -> 保存。
命令行查看当前 PHP 进程数:ps aux | grep php-fpm | wc -l
命令行查看内存占用:free -m
为什么会这样
PHP-FPM 采用多进程模型,每个进程占用独立内存。pm.max_children 决定了最大并发处理请求数,但总内存消耗等于单进程内存乘以进程数。若设置值超过物理内存承载能力,系统会触发 OOM Killer 强制杀死进程,通常首先影响 MySQL 服务。
分步处理
1. 登录宝塔面板,点击左侧“软件商店”,找到已安装的 PHP 版本(如 PHP-7.4)。
2. 点击“设置”,选择“性能调整”选项卡。
3. 根据服务器总内存选择推荐方案(如 1G-2G 选并发适中),或记录当前数值后手动修改 max_children。
4. 点击保存,面板会自动重启 PHP 服务。
5. 手动修改配置文件路径:/www/server/php/版本号/etc/php-fpm.conf,修改后需手动重启 PHP。
怎么验证是否生效
执行命令 ps aux | grep php-fpm | wc -l 查看进程数是否与设置一致。
检查日志文件 /www/wwwlogs/域名.error.log 确认不再频繁出现 502 错误。
使用命令 free -m 观察 available 内存是否保持在安全水位,避免长期低于 100MB。
执行命令 systemctl status php-fpm-版本号 确认服务状态为 active (running)。
常见坑
1. 不要将内存全部分配给 PHP,必须预留至少 50% 给 MySQL 和系统内核,公开资料中没有看到可靠的量化数据证明全部分配能给网站带来收益,反而增加崩溃风险。
2. 静态模式(static)适合大内存专用 PHP 服务器,动态模式(dynamic)适合混合部署,选错模式会导致内存浪费或响应延迟。
3. 修改配置文件后未重启 PHP 服务会导致配置不生效,面板操作通常自动重启,手动修改需确认重启动作。
常见问题
修改后出现 502 错误怎么办?
立即减少 max_children 数值并重启 PHP,检查内存是否耗尽。
静态模式和动态模式有什么区别?
静态模式常驻固定进程数,动态模式根据负载自动增减进程。
如何查看单个 PHP 进程占用内存?
使用命令 ps aux | grep php-fpm 查看 RSS 列数值估算,通常单个进程在 20MB-50MB 之间。
参考来源
宝塔面板官方文档 (bt.cn) - 软件商店及 PHP 管理功能说明 https://www.bt.cn/