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

关闭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
laravel 8.x web nginx ab -n 10000 -c 100 -k 1000 ab -n 100000 -c 1000 -k 1000
symfony 4.4 web nginx ab -n 10000 -c 100 -k 2300 ab -n 100000 -c 1000 -k 2300
symfony 4.4 api nginx ab -n 10000 -c 100 -k 4800  ab -n 100000 -c 1000 -k 4800
CI 4.0 web nginx ab -n 10000 -c 100 -k 4800  ab -n 100000 -c 1000 -k  4800
thinkphp 6.0 web nginx ab -n 10000 -c 100 -k 1600 ab -n 100000 -c 1000 -k  1600*
lumen 7.2 api nginx ab -n 10000 -c 100 -k 6000 ab -n 100000 -c 1000 -k 5500
ubiquity 2.3 web nginx ab -n 10000 -c 100 -k 6600 ab -n 100000 -c 1000 -k  6400
phalcon 3.4.4   nginx ab -n 10000 -c 100 -k   ab -n 100000 -c 1000 -k  
webman dev web php-cli ab -n 10000 -c 100 -k 31000  ab -n 100000 -c 1000 -k 30000
mixphp 2.2 web php-cli ab -n 10000 -c 100 -k 41000  ab -n 100000 -c 1000 -k  44000
go-zero 1.1.1 api go语言 ab -n 10000 -c 100 -k 20000   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
laravel 8.x web  nginx ab -n 10000 -c 100 -k 1000 ab -n 100000 -c 1000 -k 1000
symfony 4.4 web  nginx ab -n 10000 -c 100 -k 2200 ab -n 100000 -c 1000 -k 2200
CI 4.0 web  nginx ab -n 10000 -c 100 -k 4700 ab -n 100000 -c 1000 -k 4700
thinkphp 6.0 web  nginx ab -n 10000 -c 100 -k 1500 ab -n 100000 -c 1000 -k 1600*
lumen 7.2 api  nginx ab -n 10000 -c 100 -k 4600 ab -n 100000 -c 1000 -k 4600
ubiquity 2.3 web  nginx ab -n 10000 -c 100 -k 6500 ab -n 100000 -c 1000 -k 6400
phalcon 3.4.4    nginx ab -n 10000 -c 100 -k   ab -n 100000 -c 1000 -k  
webman dev web php-cli ab -n 10000 -c 100 -k 31000  ab -n 100000 -c 1000 -k 31000
mixphp  2.2 web php-cli ab -n 10000 -c 100 -k 21000  ab -n 100000 -c 1000 -k 25000

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

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

框架 版本 方式 web服务器 参数 RPS 参数 RPS 说明
laravel 8.x web nginx ab -n 10000 -c 100 -k 800 ab -n 100000 -c 1000 -k  700  DB::table()->get()
symfony 4.4 web nginx ab -n 10000 -c 100 -k 1300 ab -n 100000 -c 1000 -k  1300  
symfony 5.2 api nginx ab -n 10000 -c 100 -k 1900 ab -n 100000 -c 1000 -k  1900  
CI 4.0 web nginx ab -n 10000 -c 100 -k 2900 ab -n 100000 -c 1000 -k  2900  
thinkphp 6.0 web nginx ab -n 10000 -c 100 -k 1600 ab -n 100000 -c 1000 -k  1500  
lumen 7.2 api nginx ab -n 10000 -c 100 -k 2500 ab -n 100000 -c 1000 -k  2500  
ubiquity 2.3 web nginx ab -n 10000 -c 100 -k 5500 ab -n 100000 -c 1000 -k  5600  
phalcon 3.4.4   nginx ab -n 10000 -c 100 -k   ab -n 100000 -c 1000 -k    
webman  dev web php-cli ab -n 10000 -c 100 -k 28000  ab -n 100000 -c 1000 -k  31000  
mixphp  2.2 web php-cli ab -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

猜你喜欢

转载自blog.csdn.net/benli8541/article/details/112775208