PHP框架之 Laravel 高并发调优笔记

it阿布 · · 677 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

调整框架本身的配置

  • 编辑.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+「平台」

在这里插入图片描述
在这里插入图片描述

更多学习内容可以访问【对标大厂】精品PHP架构师教程目录大全,只要你能看完保证薪资上升一个台阶(持续更新)

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的 PHP技术交流群


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:it阿布

查看原文:PHP框架之 Laravel 高并发调优笔记

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

677 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传