swoole-http-server(swoft)和 nginx + php-fpm(Laravel 5.5)HTTP 压力测试性能对比

两个请求地址同样输出(直接输出,不涉及io和计算)

    public function test()
    {
        return ['getUser',1];
    }


["getUser",1]

1.先来看看 nginx + php-fpm

ab -c 10 -n 100 http://127.0.0.1:8080/test

swoole-http-server(swoft)和 nginx + php-fpm(Laravel 5.5)HTTP 压力测试性能对比

2.再来看看 swoole-http-server

ab -c 10 -n 100 http://127.0.0.1:8501/user/1

swoole-http-server(swoft)和 nginx + php-fpm(Laravel 5.5)HTTP 压力测试性能对比

 

nginx + php-fpm

swoole-http-server

Time taken for tests

请求处理完成花费的总时间

7.211 seconds

0.926 seconds

Complete requests

总请求数

100 100

Failed requests

失败的请求数

40 0

Requests per second

吞吐率

13.87 [#/sec] 108.03 [#/sec]

Time per request

用户平均请求等待时间

721.137 [ms] 92.569 [ms]

Time per request

服务器平均请求处理时间

72.114 [ms]

9.257 [ms]
Transfer rate 63.64 [Kbytes/sec] received 21.42 [Kbytes/sec] received

 

3.主要看三个数据

Requests per second:吞吐率

服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
计算公式:总请求数 / 处理完成这些请求数所花费的时间,即
Request per second = Complete requests / Time taken for tests

Time per request:上面的是用户平均请求等待时间

处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即
Time per request = Time taken for tests /( Complete requests / Concurrency Level)

Time per request:下面的是服务器平均请求处理时间

处理完成所有请求数所花费的时间 / 总请求数,即
Time taken for / testsComplete requests
可以看到,它是吞吐率的倒数。
同时,它也=用户平均请求等待时间/并发用户数,即
Time per request / Concurrency Level

4.通过对比 常驻内存的机制(包括其他的一些机制)在性能提升上面,真的是不止一点点(尤其在高并发场景下)。