关闭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
本文对比了多种PHP框架在不同场景下的性能表现,包括helloworld、模板渲染及数据库读取等测试,揭示了各框架的优势与局限。

3010

被折叠的 条评论
为什么被折叠?



