PHP7开启OPcache和Swoole哪个提升更大?性能的提升对比

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP7开启OPcache和Swoole哪个提升更大?性能的提升对比相关的知识,希望对你有一定的参考价值。

参考技术A 测试所用的主机为虚拟机,虚拟机配置在双核4GB的个人电脑中。虚拟机系统为linux,http服务器采用nginx,用lnmp脚本安装nginx、mysqlphp。Laravel框架为7.X版本。

在app/Http/Kernel文件中,关掉频率限制中间件throttle。

修改php-fpm.conf文件,修改pm和pm.max_children 配置,pm设置为static,pm.max_children设置为50,以获得较好的并发性能。

此时的并发大约为为 7 qps

在配置文件php.ini文件中开启opcache

此时的达到了 90qps,性能是未开启时的 10 倍以上!。

开源的laravel-swoole加速包

在项目目录下运行composer命令安装;在nginx的配置文件中配置,将请求转发到swoole监听的端口。

用 ab 压测 : ab -n 1000 -c 100 http://test.laravel.com/api/test

速度起飞!达到了800qps!

也就是一百多倍?

当然这只是一个比较简单的测试,但是总的来说opcache扩展和swoole扩展对php脚本性能的提升还是很明显的。

八重樱:PHP 互联网架构师成长之路*「设计模式」终极指南

PHP 互联网架构师 50K 成长指南+行业问题解决总纲(持续更新)

面试10家公司,收获9个offer,2020年PHP 面试问题

★如果喜欢我的文章,想与更多资深开发者一起交流学习的话,获取更多大厂面试相关技术咨询和指导,欢迎加入我们的群啊,暗号:phpzh

2020年最新PHP进阶教程,全系列!

使用 swoole 加速你的 laravel

在此前的另外一篇文章讨论过 opcache:php 性能优化之opcache - 让你的php性能提升 50%

 

再来复习一下吧,导致 php 慢的各种因素中解析性语言的特性可以说是罪魁祸首,再加上,每次请求完都释放请求时所加载的全部文件,因此也就显得更慢了。

后来我们有了 opcache,使用这个的话,请求时间大概会缩短到原来的一半,但是我们会发现其实花的时间看起来还是很多。

这是为什么呢?原因在于,opcache 只是省去了解析文件的时间,实际运行的时候,我们还是需要去把相同的代码又跑一遍,具体我们可以看下图:

 

我们假设一下,如果我们的代码跑了一遍,不释放的话,那么下次再跑的时候不就可以节省了这重复的时间?的确是的。

 

下面开始正题:

1、安装 laravel-swoole 扩展

composer require swooletw/laravel-swoole

  

2、swoole 扩展当然是必不可少的

pecl install swoole

  需要在安装完 swoole 扩展之后加到 php.ini 中,不赘述

 

3、在 config/app.php 服务提供者数组添加该服务提供者:

SwooleTW\\Http\\LaravelServiceProvider::class,

  

4、现在,你可以执行以下的命令来启动 Swoole HTTP 服务。

php artisan swoole:http start

  

ab 测试

测试环境:ubuntu 18.04,4核8线程 2.7~3.5GHz cpu,8G内存,120G SSD

测试结果:

ab参数:ab -n 1000 -c 100 

我们发现 Time per request 是 2.512ms,当然,这只是一个简单的请求,不涉及数据库查询。总的来说,表现是要比 opcache 要好的,但这个毕竟是野路子,有多少坑我们不得而知,目前也不太了解是否有把这个用于生产环境的,但是这个思路其实真的很不错,最后期待一下 php 官方把这个作为研究方向

以上是关于PHP7开启OPcache和Swoole哪个提升更大?性能的提升对比的主要内容,如果未能解决你的问题,请参考以下文章

使用 swoole 加速你的 laravel

PHP7 opcache缓存清理问题

PHP7 opcache缓存清理问题

PHP7 opcache缓存清理问题

php5.5怎么开启opcache

php_opcache怎么开启不了