背景
因为公司要开发一个高并发的接口,为了节省服务器资源,所以对一些常见的框架进行调研,判断哪一款性能符合要求
前期准备
- 安装压力测试工具(我用的是ab)
- 安装框架
我这里安装了yii2、ci、lumen5.0、tp5、biny框架
进行测试
将每个框架都链接本地数据库,打开缓存,进行两轮测试,分别为纯html页面和数据库运算页面
压测量为并发数20,总量300
测试结果
数据库运维压测结果如下:
框架 | 吞吐量 | 总响应时间(s) | 单词请求平均等待时间(ms) | 单次请求平均处理时间(ms) |
---|---|---|---|---|
ci | 29.55 | 10.152 | 676.820 | 33.841 |
lumen | 16.15 | 18.577 | 1238.494 | 61.925 |
原生脚本 | 54.71 | 5.484 | 365.597 | 18.280 |
yii2 | 15.32 | 19.581 | 339.672 | 16.984 |
tp5 | 26.81 | 11.191 | 746.045 | 37.302 |
biny | 65.22 | 4.600 | 306.638 | 15.332 |
纯html界面压测结果如下:
框架 | 总响应时间(s) | 吞吐量 | 单词请求平均等待时间(ms) | 单次请求平均处理时间(ms) |
---|---|---|---|---|
ci | 4.032 | 74.41 | 268.783 | 13.439 |
lumen | 13.087 | 22.92 | 872.479 | 43.624 |
原生脚本 | 0.516 | 581.82 | 34.375 | 1.719 |
tp5 | 4.516 | 66.43 | 301.067 | 15.053 |
yii2 | 14.213 | 21.11 | 947.526 | 47.376 |
biny | 3.017 | 99.43 | 201.153 | 10.058 |
结果分析
- 原生脚本的抗压能力最强,但是开发效率低下,后期维护成本高,而且,这里只是简单的测试了一下数据库运算,具体项目的差距可能并没有这么大
- ci和biny的并发效果是最好的,但是ci版本已经很老了,更新可能是个问题,而biny是腾讯最近开源的框架,在某些地方还存在缺陷,而且,文档也不够友好,目前只有框架中内嵌了官方文档,没有手册,且阅读性很差
- tp5的效率虽然比不上上述三种框架,但是性能也还可以,对php7支持很好,问题是框架目录混乱,不利于大型项目开发
- lumen和yii2的并发支持都不是很好,但是这两个框架本身功能非常强大,其中yii2对restful接口支持更友好,如果不差钱,还是建议用yii2进行restful接口规范进行开发