调整框架本身的配置
编辑.env
APP_ENV = production
APP_DEBUG = false
php artisan route:cache / php artisan config:cache
composer dump-autoload --optimize
php artisan optimize
其他可能
开启 OPcache
php-fpm 配置调优
But..... 压测很容易看出,这些很难看到提高十倍以上性能的效果
如果你正在考虑框架性能优化的问题, 你对 PHP 应该已经有足够的了解了。 如你所知, PHP 每次的每次请求结束, 都会释放掉执行中建立的所有资源。这样有一个很大的好处:PHP 程序员基本不用费力去考虑资源释放的问题,诸如内存,IO 句柄,数据库连接等,请求结束时 PHP 将全部释放。PHP 程序员几乎不用关心内存释放的问题,也很难写出内存泄露的程序。这让 PHP 变得更加简单容易上手, 直抒心意。但是也带来了一个坏处:PHP 很难在请求间复用资源, 类似 PHP 框架这种耗时的工作, 每次请求都需要反复做 —— 即使每次都在做同样的事情。也正因为如此,在 PHP 发展过程中,关于是否使用框架的争论也从未停止过。
Laravel 本身启动需要的文件就很多,外加其出了名的生态环境好,开发中我们会 很多很多现有的轮子,使得一次启动的磁盘 IO 特别高(就是要加载很多文件嘛),虽然官方的 php artisan optimize 方法优化了文件的加载,但并没有实际解决 IO 上的问题。
知道了问题那就很容易解决了,只要不要每次启动都重新加载就好了,下面轮到 Swoole 上场啦。swoole 框架相比 apache/fpm,主要是节省 PHP 框架和全局对象每次请求创建销毁带来的性能损耗。如果你的 PHP 代码是裸 echo 的方式,swoole 框架并没有性能优势。
同样,事情总是有好有坏。坏处是:PHP 编程变得更难了, 你需要考虑内存的释放,需要关心 PHP 如何使用内存。甚至, 你需要了解使用的框架,以免『不小心』写出让人『惊喜』的效果。同时, PHP 的调试变得更难, 因为每次修改程序后需要重启进程才能看到效果。好处是:程序的性能得到极大的提高。 当然, 客观上的一些利好因素是: PHP 的内存回收已经相当稳定和高效, Swoole 稳定性已经在相当多的项目中得到验证,Laravel 代码质量相当高
画个饼
方案性能对比 使用的轮子:stone
应用类型 | 原始 Laravel | Stone-Web | Stone-Server | 原生 php 直接 echo |
---|---|---|---|---|
laravel5默认页面 | 150 | 3000 | -- | -- |
laravel5简单接口 | 150 | 3000 | 8500 | 9500 |
laravel4实际项目简单页面 | 70 | 1000 | -- | -- |
laravel4简单接口 | 120 | -- | 8200 | 9500 |
laravel4实际项目首页 | 35 | 380 | -- | -- |
以上单位全部为 RPS
Stone 相对于原始的 Laravel 有相当可观的提升
即使和一个简单的 echo 相比, Stone 性能损失仅 10% 左右
swoole+laravel 说干就干!
PS:如果亲还是用的 php5 我就不带你玩了哈
选个新点火点的轮子:laravel-s
找个本地已有项目 ab 试水,附上现有结果
Requests per second: 31.91 [#/sec]
先看 laravel-s 文档一阵配置....
Requests per second: 592.17 [#/sec] (mean)
都是压测的 ab -n 200 -c 20 三次取的平均值 性能提升了 20 倍!!!
不必多说 花 10 分钟你也来试试 就知道其中的爽了
bingo, 终于可以在 golang 的同事面前继续说 php 是世界上最美的语言了.......
最后再吹水一波 swoole
使用 apache bench 工具对 Nginx 静态页、Golang Http 程序、PHP7+Swoole Http 程序进行压力测试。在同一台机器上,进行并发 100 共 100 万次 Http 请求的基准测试中,QPS 对比如下:
软件 | QPS | 软件版本 |
---|---|---|
Nginx | 164489.92 | nginx/1.4.6 (Ubuntu) |
Golang | 166838.68 | go version go1.5.2 linux/amd64 |
PHP7+Swoole | 287104.12 | swoole-1.7.22-alpha |
Nginx-1.9.9 | 245058.70 | nginx/1.9.9 |
From swoole 官网 去看看
点关注,不迷路
好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才。之前说过,PHP方面的技术点很多,也是因为太多了,实在是写不过来,写过来了大家也不会看的太多,所以我这里把它整理成了PDF和文档,如果有需要的可以
更多学习内容可以访问【对标大厂】精品PHP架构师教程目录大全,只要你能看完保证薪资上升一个台阶(持续更新)
以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的 PHP技术交流群
有疑问加站长微信联系(非本文作者)