关闭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