关于swoole 和golang 的压力测试结果

一、环境介绍

  • linux centos7
  • php7.1.18
  • go1.12.1
  • 2核4G内存

二、代码

  • swoole代码
on("start", function ($server) {
    echo "Swoole http server is started at http://127.0.0.1:9501\n";
});

$http->on("request", function ($request, $response) {
    $response->header("Content-Type", "text/html");
    $response->end("Hello World\n");
});

$http->start();
  • golang 代码
package main
import (
    "io"
    "net/http"
)
func main() {
    http.ListenAndServe("0.0.0.0:9502", http.HandlerFunc(handle))
}
func handle(rw http.ResponseWriter, r *http.Request) {
    rw.Header().Set("Content-Type", "text/html")
    io.WriteString(rw, "Hello World\n")
}

三、开始测试

3.1 ab -n 100 -c 10

swoole

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      10
Time taken for tests:   0.014 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      16000 bytes
HTML transferred:       1200 bytes
Requests per second:    6957.01 [#/sec] (mean)
Time per request:       1.437 [ms] (mean)
Time per request:       0.144 [ms] (mean, across all concurrent requests)
Transfer rate:          1087.03 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       1
Processing:     0    1   0.3      1       2
Waiting:        0    1   0.2      1       1
Total:          1    1   0.3      1       2

Percentage of the requests served within a certain time (ms)
  50%      1
  66%      1
  75%      1
  80%      2
  90%      2
  95%      2
  98%      2
  99%      2
 100%      2 (longest request)

golang

Server Software:
Server Hostname:        127.0.0.1
Server Port:            9502

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      10
Time taken for tests:   0.021 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      11300 bytes
HTML transferred:       1200 bytes
Requests per second:    4760.54 [#/sec] (mean)
Time per request:       2.101 [ms] (mean)
Time per request:       0.210 [ms] (mean, across all concurrent requests)
Transfer rate:          525.33 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.2      0       1
Processing:     0    1   0.8      1       8
Waiting:        0    1   0.7      1       7
Total:          0    1   0.8      1       8

Percentage of the requests served within a certain time (ms)
  50%      1
  66%      2
  75%      2
  80%      2
  90%      2
  95%      2
  98%      2
  99%      8
 100%      8 (longest request)

3.2 ab -n 1000 -c 100

swoole

Server Software:        swoole-http-server
Server Hostname:        127.0.0.1
Server Port:            9501

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      100
Time taken for tests:   0.094 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      160000 bytes
HTML transferred:       12000 bytes
Requests per second:    10680.68 [#/sec] (mean)
Time per request:       9.363 [ms] (mean)
Time per request:       0.094 [ms] (mean, across all concurrent requests)
Transfer rate:          1668.86 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   1.2      2       6
Processing:     2    7   3.0      6      14
Waiting:        0    6   2.5      5      13
Total:          4    9   2.9      8      18

Percentage of the requests served within a certain time (ms)
  50%      8
  66%      9
  75%     10
  80%     11
  90%     13
  95%     14
  98%     17
  99%     17
 100%     18 (longest request)

golang

Server Software:
Server Hostname:        127.0.0.1
Server Port:            9502

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      100
Time taken for tests:   0.107 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      113000 bytes
HTML transferred:       12000 bytes
Requests per second:    9331.75 [#/sec] (mean)
Time per request:       10.716 [ms] (mean)
Time per request:       0.107 [ms] (mean, across all concurrent requests)
Transfer rate:          1029.77 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   1.4      1       6
Processing:     1    9   5.3      8      35
Waiting:        0    8   5.0      7      34
Total:          1   10   4.9      9      38

Percentage of the requests served within a certain time (ms)
  50%      9
  66%     11
  75%     13
  80%     14
  90%     17
  95%     18
  98%     20
  99%     25
 100%     38 (longest request)

3.3 ab -n 10000 -c 1000

swoole

Server Software:        swoole-http-server
Server Hostname:        127.0.0.1
Server Port:            9501

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      1000
Time taken for tests:   0.868 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      1600000 bytes
HTML transferred:       120000 bytes
Requests per second:    11515.25 [#/sec] (mean)
Time per request:       86.841 [ms] (mean)
Time per request:       0.087 [ms] (mean, across all concurrent requests)
Transfer rate:          1799.26 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    4   4.7      3      30
Processing:     3   11   5.0     10     216
Waiting:        0    9   4.7      9     214
Total:          6   15   7.1     14     239

Percentage of the requests served within a certain time (ms)
  50%     14
  66%     15
  75%     16
  80%     17
  90%     20
  95%     26
  98%     41
  99%     42
 100%    239 (longest request)

golang

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      1000
Time taken for tests:   1.018 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      1130000 bytes
HTML transferred:       120000 bytes
Requests per second:    9823.25 [#/sec] (mean)
Time per request:       101.799 [ms] (mean)
Time per request:       0.102 [ms] (mean, across all concurrent requests)
Transfer rate:          1084.01 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    5   6.6      3      37
Processing:     0   13   9.3     12     209
Waiting:        0   11   8.2     10     205
Total:          0   18  13.5     15     210

Percentage of the requests served within a certain time (ms)
  50%     15
  66%     17
  75%     19
  80%     21
  90%     33
  95%     45
  98%     66
  99%     77
 100%    210 (longest request)

3.4 ab -n 100000 -c 10000

swoole

Server Software:        swoole-http-server
Server Hostname:        127.0.0.1
Server Port:            9501

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      10000
Time taken for tests:   9.582 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      16000000 bytes
HTML transferred:       1200000 bytes
Requests per second:    10436.61 [#/sec] (mean)
Time per request:       958.166 [ms] (mean)
Time per request:       0.096 [ms] (mean, across all concurrent requests)
Transfer rate:          1630.72 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0  487 535.1    297    7133
Processing:    62  374 115.8    388     832
Waiting:        0  286  96.7    273     704
Total:        161  861 549.7    696    7350

Percentage of the requests served within a certain time (ms)
  50%    696
  66%    826
  75%    912
  80%   1225
  90%   1607
  95%   1739
  98%   2005
  99%   3442
 100%   7350 (longest request)

golang

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      10000
Time taken for tests:   16.700 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      11300000 bytes
HTML transferred:       1200000 bytes
Requests per second:    5987.91 [#/sec] (mean)
Time per request:       1670.033 [ms] (mean)
Time per request:       0.167 [ms] (mean, across all concurrent requests)
Transfer rate:          660.77 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0  709 1278.7     20    7048
Processing:     0   72 324.6     34   13554
Waiting:        0   66 324.3     27   13553
Total:          1  781 1357.7     64   16588

Percentage of the requests served within a certain time (ms)
  50%     64
  66%   1029
  75%   1047
  80%   1061
  90%   3041
  95%   3091
  98%   7041
  99%   7083
 100%  16588 (longest request)

3.5 ab -n 200000 -c 20000

swoole

Server Software:        swoole-http-server
Server Hostname:        127.0.0.1
Server Port:            9501

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      20000
Time taken for tests:   20.057 seconds
Complete requests:      200000
Failed requests:        0
Write errors:           0
Total transferred:      32000000 bytes
HTML transferred:       2400000 bytes
Requests per second:    9971.56 [#/sec] (mean)
Time per request:       2005.704 [ms] (mean)
Time per request:       0.100 [ms] (mean, across all concurrent requests)
Transfer rate:          1558.06 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0  913 689.1    696   15748
Processing:   324  966 229.3    959    1970
Waiting:        0  736 189.6    743    1556
Total:        909 1879 716.9   1659   16114

Percentage of the requests served within a certain time (ms)
  50%   1659
  66%   1842
  75%   2129
  80%   2427
  90%   2605
  95%   2744
  98%   4279
  99%   4522
 100%  16114 (longest request)

golang

Server Software:
Server Hostname:        127.0.0.1
Server Port:            9502

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      20000
Time taken for tests:   34.083 seconds
Complete requests:      200000
Failed requests:        0
Write errors:           0
Total transferred:      22600000 bytes
HTML transferred:       2400000 bytes
Requests per second:    5868.07 [#/sec] (mean)
Time per request:       3408.274 [ms] (mean)
Time per request:       0.170 [ms] (mean, across all concurrent requests)
Transfer rate:          647.55 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0 1328 2378.8    466   15093
Processing:     0  171 1106.5     44   26576
Waiting:        0  163 1106.7     37   26573
Total:          0 1499 2775.8    709   33626

Percentage of the requests served within a certain time (ms)
  50%    709
  66%   1069
  75%   1190
  80%   3031
  90%   3209
  95%   7080
  98%   8709
  99%  15161
 100%  33626 (longest request)

3.6 ab -n 300000 -c 20000

swoole

Server Software:        swoole-http-server
Server Hostname:        127.0.0.1
Server Port:            9501

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      20000
Time taken for tests:   29.131 seconds
Complete requests:      300000
Failed requests:        0
Write errors:           0
Total transferred:      48000000 bytes
HTML transferred:       3600000 bytes
Requests per second:    10298.19 [#/sec] (mean)
Time per request:       1942.089 [ms] (mean)
Time per request:       0.097 [ms] (mean, across all concurrent requests)
Transfer rate:          1609.09 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0  944 887.3    691   15919
Processing:   294  938 220.0    923    2056
Waiting:        0  743 203.4    717    1877
Total:        725 1882 922.0   1665   16908

Percentage of the requests served within a certain time (ms)
  50%   1665
  66%   1843
  75%   2125
  80%   2263
  90%   2641
  95%   2994
  98%   4552
  99%   4814
 100%  16908 (longest request)

golang

已无法承受压力

3.7 ab -n 400000 -c 20000

swoole

Server Software:        swoole-http-server
Server Hostname:        127.0.0.1
Server Port:            9501

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      20000
Time taken for tests:   39.223 seconds
Complete requests:      400000
Failed requests:        0
Write errors:           0
Total transferred:      64000000 bytes
HTML transferred:       4800000 bytes
Requests per second:    10197.99 [#/sec] (mean)
Time per request:       1961.170 [ms] (mean)
Time per request:       0.098 [ms] (mean, across all concurrent requests)
Transfer rate:          1593.44 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0  930 717.2    722   15587
Processing:   360  975 198.0    962    2555
Waiting:        0  738 168.0    739    2344
Total:        740 1905 740.7   1732   16800

Percentage of the requests served within a certain time (ms)
  50%   1732
  66%   1894
  75%   2015
  80%   2263
  90%   2623
  95%   2836
  98%   4397
  99%   4623
 100%  16800 (longest request)

golang

已无法承受压力

转载于:https://www.cnblogs.com/xiaobaiskill/p/10931789.html

你可能感兴趣的:(golang,php,java)