登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
签到
每天签到奖励2-10圆
导读
排行榜
TG频道
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
VIP申请
VIP网盘
网盘
联系我们
发帖说明
每日签到
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
PHP 性能优化实战 OPcache + FPM 极限优化配置 ...
PHP 性能优化实战 OPcache + FPM 极限优化配置
[ 复制链接 ]
慢秤
2025-10-1 16:17:08
PHP 性能优化实战 OPcache + FPM 极限优化配置
先说下背景:这是个运行在 5 台云服务器(8 核 CPU,32GB 内存)上的老 PHP 应用。这些机器配置很强,对这个应用来说完全是过度配置了。
这事一直没有优先级,所以我从来没处理过——直到现在。
监控显示服务器使用了约 15% 的 CPU,流量增加时最高到 30%,内存使用率也很低。我知道原因:php-fpm 从来没有为这些机器正确配置过,而且 OPCache 是禁用的。
优化前后对比
优化前
集群:5 台云服务器
总 CPU:40 核
总内存:320GB
白天平均 CPU 负载:15-20%,峰值 30%
平均内存使用:约 2GB
平均 PHP 执行时间:150ms
OPCache:关闭
php-fpm 配置:
pm.max_children = 100
pm.start_servers = 6
pm.min_spare_servers = 4
pm.max_spare_servers = 8
复制代码
优化后
集群:2 台云服务器
总 CPU:16 核
总内存:64GB
白天平均 CPU 负载:约 2%
平均内存使用:约 7GB
平均 PHP 执行时间:23ms
OPCache:开启
php-fpm 配置:
pm.max_children = 300
pm.start_servers = 100
pm.min_spare_servers = 60
pm.max_spare_servers = 150
复制代码
PHP-FPM 是什么?
PHP-FPM 是最广泛使用的 PHP 应用服务方式,本质上是一个进程管理器。大多数请求遵循这个流程:
请求 -> NGINX -> php-fpm -> (选择或创建 PHP 进程)-> 执行代码 -> 响应
NGINX 作为反向代理通过 socket 与 fpm 通信——FPM 负责从进程池中选择一个进程,或者在没有空闲进程时创建新进程(如果低于定义的 max_children 值)。
例如,假设以下配置:
最大进程数:10
最大池大小:8
如果收到 8 个并发请求,php-fpm 会简单地从池中选择空闲进程。如果收到 10 个请求,它会选择 8 个空闲进程并 fork 2 个额外的进程。
Fork 进程是有开销的,但这不是世界末日。我们稍后会回到这个话题。
OPCache 是什么?
简单来说,OPCache 是一个操作码缓存。
那么什么是操作码?操作码是低级机器指令,它告诉处理器要执行什么操作。我们不需要深入这个兔子洞。当 PHP 脚本执行时会发生以下过程:
解释器加载脚本
脚本解析成语法树
语法树转成 Zend 引擎能懂的操作码
Zend 引擎执行这些操作码
输出结果
当启用 OPCache 时,步骤 2 和 3 被跳过:
解释器加载脚本
Zend 引擎执行缓存好的操作码
输出结果
显然,如果缓存未命中,所有步骤都必须执行。可以想象,缓存这些昂贵的操作可以提供巨大的性能改进,需要更少的 CPU 周期并减少整体内存消耗。
测试环境
我在云厂商上设置了几台机器进行测试:
测试服务器:4 核 CPU,8GB 内存,运行一个简单的 Laravel 应用,进行数据库读写操作
压力测试服务器:用于发送 HTTP 请求的简单服务器
数据库:2 核 CPU,4GB 内存,MySQL
Laravel 应用运行的代码如下:
[code]
优化
PHP
性能
实战
OPcache
相关帖子
鸿蒙应用开发从入门到实战(十八):组件编程思想之代码复用
别再用 PHP 动态方法调用了!三个坑让你代码难以维护
C# 弃元模式:从语法糖到性能利器的深度解析
SpringCloud微服务实战——搭建企业级开发框架
5个高并发场景优化的衡量指标
鸿蒙应用开发从入门到实战(十九):样式复用案例
接口测试全流程实战:从工具到架构的深度解析
PHP 15 个高效开发的小技巧
智能侠PHP动态寄生虫刷新变动(1)
PHP 开发者应该理解的 Linux 入门权限指南
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
鸿蒙应用开发从入门到实战(十八):组件编程思想之代码复用
0
651
系味
2025-10-10
业界
别再用 PHP 动态方法调用了!三个坑让你代码难以维护
0
644
东门芳洲
2025-10-10
业界
C# 弃元模式:从语法糖到性能利器的深度解析
0
29
南宫玉英
2025-10-10
安全
SpringCloud微服务实战——搭建企业级开发框架
0
132
茅香馨
2025-10-10
安全
5个高并发场景优化的衡量指标
0
229
每捎京
2025-10-10
业界
鸿蒙应用开发从入门到实战(十九):样式复用案例
0
332
赖娅闺
2025-10-11
科技
接口测试全流程实战:从工具到架构的深度解析
0
162
泠邸
2025-10-11
业界
PHP 15 个高效开发的小技巧
0
475
颜清华
2025-10-12
程序
智能侠PHP动态寄生虫刷新变动(1)
0
7
新程序
2025-10-12
业界
PHP 开发者应该理解的 Linux 入门权限指南
0
551
布相
2025-10-12
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
程序
科技
签约作者
程序园优秀签约作者
发帖
慢秤
2025-10-1 16:17:08
关注
0
粉丝关注
26
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994888
dage888
999994
3934307807
993678
4
富账慕
10007
5
刎唇
9993
6
柴古香
9989
7
匝抽
9986
8
孙淼淼
9989
9
筒濂
9977
10
崔瑜然
9984
查看更多