A variety of simple language web performance comparison test

Suddenly want to compare python nodejs go the web response, you can simply write a personalized comparison test.

Test objectives:
. 1 4-core i5 same machine 32G Linux 
2. using python (flask threaded mode) nodejs go respectively to write a simple echo service

testing tools:
WRK


Server Checklist:

python  flask      http://192.168.0.208:5050/
nodejs  express    http://192.168.0.208:5056/
go      server     http://192.168.0.208:5057/


Test script:

wrk -c100 -t10 -d30s http: // 192.168.0.208:5050/ 
wrk -c100 -t10 -d30s http: // 192.168.0.208:5056/ 
wrk -c100 -t10 -d30s http: // 192.168.0.208:5057 / 

wrk -c1000 -t10 -d30s http: // 192.168.0.208:5050/ 
wrk -c1000 -t10 -d30s http: // 192.168.0.208:5056/ 
wrk -c1000 -t10 -d30s http: // 192.168.0.208: 5057 /


Test Results:

100 threads terminal 10

Running 30s test @ http://192.168.0.208:5050/
  10 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    85.24ms   62.29ms 447.28ms   90.54%
    Req/Sec   137.84     54.19   202.00     63.72%
  28723 requests in 30.03s, 6.79MB read
  Socket errors: connect 100, read 0, write 0, timeout 0
Requests/sec:    956.35
Transfer/sec:    231.62KB


hylas@keras208:~$ wrk -c100 -t10 -d30s  http://192.168.0.208:5056/
Running 30s test @ http://192.168.0.208:5056/
  10 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     2.37ms  349.63us  17.71ms   98.57%
    Req/Sec     4.25k   253.62     5.32k    97.80%
  1269157 requests in 30.01s, 188.82MB read
Requests/sec:  42284.18
Transfer/sec:      6.29MB



hylas@keras208:~$ wrk -c100 -t10 -d30s  http://192.168.0.208:5057/
Running 30s test @ http://192.168.0.208:5057/
  10 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     2.20ms    5.19ms 105.37ms   91.89%
    Req/Sec    13.93k     3.45k   46.58k    72.80%
  4165034 requests in 30.07s, 647.45MB read
Requests/sec: 138501.94
Transfer/sec:     21.53MB


1000 terminal 10 thread

hylas@keras208:~$ wrk -c1000 -t10 -d30s  http://192.168.0.208:5050/
Running 30s test @ http://192.168.0.208:5050/
  10 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   124.59ms  129.37ms   1.97s    91.52%
    Req/Sec   129.50     92.32   610.00     66.97%
  30763 requests in 30.09s, 7.28MB read
  Socket errors: connect 938, read 52, write 0, timeout 465
Requests/sec:   1022.24
Transfer/sec:    247.57KB


hylas@keras208:~$ wrk -c1000 -t10 -d30s  http://192.168.0.208:5056/
Running 30s test @ http://192.168.0.208:5056/
  10 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    25.00ms    9.27ms 463.53ms   96.69%
    Req/Sec     4.01k   480.69    12.12k    94.63%
  1189964 requests in 30.09s, 177.03MB read
Requests/sec:  39545.31
Transfer/sec:      5.88MB


hylas@keras208:~$ wrk -c1000 -t10 -d30s  http://192.168.0.208:5057/
Running 30s test @ http://192.168.0.208:5057/
  10 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    17.17ms   33.92ms 475.96ms   91.23%
    Req/Sec    12.94k     6.57k   79.62k    70.73%
  3831283 requests in 30.09s, 595.57MB read
Requests/sec: 127325.42
Transfer/sec:     19.79MB

 

 

结论:

1.  100 终端时:python 延时最大,与另外两个相差一个数量级 ,  nodejs go 差不多。 Req/Sec 比例分别是 0.13 : 4:13 , go能大大 13k/s
2.  1000 终端时: nodejs 和 go 的延时增加,但还是明显优与 python ,   Req/Sec  保持稳定 python 最低,nodejs :go  3:12  go的峰值 79k/s
3.  在高并发web服务中 首选 go  , nodejs  次之   python 最弱

ps: 以上结论未考虑 开发效率,人员薪资成本等因素

 

Guess you like

Origin www.cnblogs.com/xiaoxuebiye/p/11027698.html