传统组合 nginx + fpm的方式
- 持续保持PHP版本更新, 一直使用最新最稳定的PHP版本.
- 框架不要标新立异, 选择性能口碑和开发效率平衡的比较好的, 要妥善使用框架, 注意其开发模式配置和生产模式配置的区别.
- 完善性能监控, 开源的用Tideways, 商业收费可以考虑oneapm, 总之, 要能及时发现程序中的性能killer
- nginx和php-fpm的通信配置要好好配置
- php-fpm最好根据自己机器的情况, 采用静态方式把所用worker进程预先启动.
- 动静分离, 静态资源全部上CDN, 减少在服务器上无用I/O操作, 服务器只运行自己的PHP程序, 如果有其它程序要跑, 最好单独起一个服务器/容器来做, 做到专项专用, 这样才能减少互相干扰产生的性能和debug排查等问题.
- 对下游所有的网络请求都要设置超时时间, 防止下游卡死拖垮整个服务.
- 对前端的所有请求都要设置超时时间, 同时建立防刷机制, 防止前端刷爆服务.
- 能用NoSql的就不要用mysql, 数据库永远是性能水桶中的最短板.
- 调优你能调优到的下游依赖, 如数据库调优, Redis调优等等....
非传统方案
上Swoole完全替代传统PHP框架, 或者使用Swoole或openresty替代nginx来做接入层, 在接入层就把简单的逻辑处理了 或者 清洗流量, 只把真正需要业务处理的流量放到PHP那边.
主流性能提升方案
转Golang