PHP框架最新性能压力测试比较

本文进行了PHP框架的性能压力测试,包括thinkphp6.0、laravel和mixphp(基于swoole 4.5)。在hello world、模板渲染和数据库读取场景下,对比了不同框架的表现。结果显示,ubiquity在传统PHP框架中性能最佳,而webman(mixphp)在使用swoole的情况下展现出最高的性能,超过了go-zero。对于laravel,推荐在接口开发时使用lumen微框架,以获取高性能和laravel的功能。此外,文章还提供了性能优化建议和遇到问题的解决方法。
摘要由CSDN通过智能技术生成

关闭debug,无优化情况下测试。
硬件:

CPU:Intel(R) Xeon(R) CPU E5-2689 0 @ 2.60GHz 16核心。内存:16GB。

操作系统:Linux desktop 5.4.0-58-generic #64~18.04.1-Ubuntu SMP  x86_64 x86_64 x86_64 GNU/Linux

PHP版本:7.4

PHP框架最新hello world压力测试结果:

框架版本方式web服务器参数RPS参数RPS
laravel8.xwebnginxab -n 10000 -c 100 -k1000ab -n 100000 -c 1000 -k1000
symfony4.4webnginxab -n 10000 -c 100 -k2300ab -n 100000 -c 1000 -k2300
symfony4.4apinginxab -n 10000 -c 100 -k4800 ab -n 100000 -c 1000 -k4800
CI4.0webnginxab -n 10000 -c 100 -k4800 ab -n 100000 -c 1000 -k 4800
thinkphp6.0webnginxab -n 10000 -c 100 -k1600ab -n 100000 -c 1000 -k 1600*
lumen7.2apinginxab -n 10000 -c 100 -k6000ab -n 100000 -c 1000 -k5500
ubiquity2.3webnginxab -n 10000 -c 100 -k6600ab -n 100000 -c 1000 -k 6400
phalcon3.4.4 nginxab -n 10000 -c 100 -k ab -n 100000 -c 1000 -k 
webmandevwebphp-cliab -n 10000 -c 100 -k31000 ab -n 100000 -c 1000 -k30000
mixphp2.2webphp-cliab -n 10000 -c 100 -k41000 ab -n 100000 -c 1000 -k 44000
go-zero1.1.1apigo语言ab -n 10000 -c 100 -k20000  ab -n 100000 -c 1000 -k 25000

*thinkphp6.0,第2项有时会出错。
*laravel的SESSION_DRIVER设置为array。
*mixphp为基于swoole 4.5的框架,开启多核与端口复用(并不是核心越多性能越高,以上开了4核)

PHP框架最新模板渲染hello world压力测试结果:

框架版本方式web服务器参数RPS参数RPS
laravel8.xweb nginxab -n 10000 -c 100 -k1000ab -n 100000 -c 1000 -k1000
symfony4.4web nginxab -n 10000 -c 100 -k2200ab -n 100000 -c 1000 -k2200
CI4.0web nginxab -n 10000 -c 100 -k4700ab -n 100000 -c 1000 -k4700
thinkphp6.0web nginxab -n 10000 -c 100 -k1500ab -n 100000 -c 1000 -k1600*
lumen7.2api nginxab -n 10000 -c 100 -k4600ab -n 100000 -c 1000 -k4600
ubiquity2.3web nginxab -n 10000 -c 100 -k6500ab -n 100000 -c 1000 -k6400
phalcon3.4.4  nginxab -n 10000 -c 100 -k ab -n 100000 -c 1000 -k 
webmandevwebphp-cliab -n 10000 -c 100 -k31000 ab -n 100000 -c 1000 -k31000
mixphp 2.2webphp-cliab -n 10000 -c 100 -k21000 ab -n 100000 -c 1000 -k25000

*thinkphp6.0,第2项有时会出错。
*laravel的SESSION_DRIVER设置为array。

PHP框架最新读取mysql 5.7数据库压力测试结果:

框架版本方式web服务器参数RPS参数RPS说明
laravel8.xwebnginxab -n 10000 -c 100 -k800ab -n 100000 -c 1000 -k 700 DB::table()->get()
symfony4.4webnginxab -n 10000 -c 100 -k1300ab -n 100000 -c 1000 -k 1300 
symfony5.2apinginxab -n 10000 -c 100 -k1900ab -n 100000 -c 1000 -k 1900 
CI4.0webnginxab -n 10000 -c 100 -k2900ab -n 100000 -c 1000 -k 2900 
thinkphp6.0webnginxab -n 10000 -c 100 -k1600ab -n 100000 -c 1000 -k 1500 
lumen7.2apinginxab -n 10000 -c 100 -k2500ab -n 100000 -c 1000 -k 2500 
ubiquity2.3webnginxab -n 10000 -c 100 -k5500ab -n 100000 -c 1000 -k 5600 
phalcon3.4.4 nginxab -n 10000 -c 100 -k ab -n 100000 -c 1000 -k  
webman devwebphp-cliab -n 10000 -c 100 -k28000 ab -n 100000 -c 1000 -k 31000 
mixphp 2.2webphp-cliab -n 10000 -c 100 -k 23000 ab -n 100000 -c 1000 -k 25000 

*laravel的SESSION_DRIVER设置为array。
*ubiquity:如果用了php7.4 preloading 有性能高达50-60%的性能提升.

说明:

1.为了性能,laravel 的SESSION_DRIVER不要设置为file,否则结果会比较低。
2.mysql的连接数要设置大一些,不然会出错。
3.如果出现connect() to unix:/var/run/php-fpm.sock failed (11: Resource temporarily unavailable),请修改参数:
1、内核修改
sudo vim /etc/sysctl.conf
net.ipv4.tcp_max_syn_backlog = 4096
net.core.netdev_max_backlog = 4096
sudo sysctl -p生效
2、php-fpm配置修改
修改 /etc/php/7.4/fpm/pool.d/www.conf
listen.backlog = 4096
sudo service php-fpm7.4 restart

结论:

ubiquity:(https://ubiquity.kobject.net/) ,做为一个纯PHP框架,目前是传统PHP框架中性能最高的。

webman(https://www.workerman.net/doc/webman),mixphp(swoole)框架为cli模式,因为是长驻内存,所以性能最高,并在hello world测试中超过了go语言的go-zero框架。

如果你用的是laravel技术栈,那么在做接口时,强烈建议用laravel的微框架lumen,除具有非常高的性能外,还具有laravel的大部分功能,并且可以极容易升级到laravel框架。

ps:https://github.com/lizhichao/one (此框架性能也很高。)

原创文章,转载请注明:来自Lenix的博客,地址https://blog.p2hp.com/archives/6906

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值