ab测试 uwsgi遇到的问题

时间:2021-08-29 04:10:26

1 请求并发数目较大时,接收到的数目小于发送的数目

1.1

描述:uwsgi正常返回302跳转

ab -n 5000 -c 250 -g test.log "192.168.50.20:9033/Mapping.do?×××××××&as=1234567"

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Copyright 2006 The Apache Software Foundation, http://www.apache.org/





Benchmarking 192.168.50.20 (be patient)

Completed 500 requests

Completed 1000 requests

Completed 1500 requests

Completed 2000 requests

Completed 2500 requests

Completed 3000 requests

Completed 3500 requests

Completed 4000 requests

Completed 4500 requests

Finished 5000 requests





Server Software:        

Server Hostname:        192.168.50.20

Server Port:            9033





Document Path:          /Mapping.do?bfd_nid=behe&as=1234567

Document Length:        0 bytes





Concurrency Level:      250

Time taken for tests:   12.107652 seconds

Complete requests:      5000

Failed requests:        0

Write errors:           0

Non-2xx responses:      4990

Total transferred:      2095800 bytes

HTML transferred:       0 bytes

Requests per second:    412.96 [#/sec] (mean)

Time per request:       605.383 [ms] (mean)

Time per request:       2.422 [ms] (mean, across all concurrent requests)

Transfer rate:          168.98 [Kbytes/sec] received





Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        0    1  42.5      0    3000

Processing:    18  466 1595.9    151   12083

Waiting:        0  446 1536.9    150   12083

Total:         18  467 1601.7    151   12106





Percentage of the requests served within a certain time (ms)

  50%    151

  66%    165

  75%    198

  80%    251

  90%    389

  95%    485

  98%   9008

  99%  12036

 100%  12106 (longest request)

按照上边的结果所示,发送了5000个请求,4990个非2xx相应(Non-2xx responses:      4990)

而查看uwsgi.log发现也只接收到4990个请求。

1.2   只要降低并发就不会出现这样的问题

ab -n 50000 -c 100 -g test.log "192.168.50.20:9033/Mapping.do?bfd_nid=behe&as=1234567"

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Copyright 2006 The Apache Software Foundation, http://www.apache.org/





Benchmarking 192.168.50.20 (be patient)

Completed 5000 requests

Completed 10000 requests

Completed 15000 requests

Completed 20000 requests

Completed 25000 requests

Completed 30000 requests

Completed 35000 requests

Completed 40000 requests

Completed 45000 requests

Finished 50000 requests









Server Software:        

Server Hostname:        192.168.50.20

Server Port:            9033





Document Path:          /Mapping.do?bfd_nid=behe&as=1234567

Document Length:        0 bytes





Concurrency Level:      100

Time taken for tests:   85.735172 seconds

Complete requests:      50000

Failed requests:        0

Write errors:           0

Non-2xx responses:      50000

Total transferred:      21000000 bytes

HTML transferred:       0 bytes

Requests per second:    583.19 [#/sec] (mean)

Time per request:       171.470 [ms] (mean)

Time per request:       1.715 [ms] (mean, across all concurrent requests)

Transfer rate:          239.19 [Kbytes/sec] received





Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        0    0   1.0      0     186

Processing:     4  170 123.1    136    1592

Waiting:        4  170 123.0    136    1592

Total:          4  170 123.1    136    1592





Percentage of the requests served within a certain time (ms)

  50%    136

  66%    148

  75%    159

  80%    169

  90%    265

  95%    403

  98%    540

  99%    650

 100%   1592 (longest request)

1.3 调大listen参数解决问题。

当listen参数变大时,可以提高并发的数目。按道理增大processes数量和增大listen队列长度都可以增大并发能力。但是好像使用listen参数,效果比较显著。难道是后端处理速度太慢,需要缓存更多?

uwsgi.ini:

[uwsgi]

http=0.0.0.0:9033

master=true

pythonpath=../

module=api

processes=30

listen=512

daemonize=uwsgi.log

pidfile=uwsgi.pid

vacuum=true

harakiri=5

harakiri-verbose=true

buffer-size=16384

2

uwsgi.ini:

[uwsgi]

#http=192.168.40.11:9034

http=0.0.0.0:9034

master=true

pythonpath=../

module=breapi

processes=32

listen=512

daemonize=./logs/uwsgi.log

pidfile=uwsgi.pid

vacuum=true

harakiri=5

harakiri-verbose=true

buffer-size=16384

stats = $(HOSTNAME):1734

测试:

ab   -n 30000 -c 1000 -g test.log "192.168.40.11:9034/Mapping.do?bfd_nid=behe&as=1234567" 

This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Copyright 2006 The Apache Software Foundation, http://www.apache.org/





Benchmarking 192.168.40.11 (be patient)

Completed 3000 requests

Completed 6000 requests

Completed 9000 requests

Completed 12000 requests

Completed 15000 requests

Completed 18000 requests

Completed 21000 requests

Completed 24000 requests

Completed 27000 requests

Finished 30000 requests









Server Software:        

Server Hostname:        192.168.40.11

Server Port:            9034





Document Path:          /Mapping.do?bfd_nid=behe&as=1234567

Document Length:        0 bytes





Concurrency Level:      1000

Time taken for tests:   12.411582 seconds

Complete requests:      30000

Failed requests:        0

Write errors:           0

Non-2xx responses:      29994

Total transferred:      12597480 bytes

HTML transferred:       0 bytes

Requests per second:    2417.10 [#/sec] (mean)

Time per request:       413.719 [ms] (mean)

Time per request:       0.414 [ms] (mean, across all concurrent requests)

Transfer rate:          991.17 [Kbytes/sec] received





Connection Times (ms)

              min  mean[+/-sd] median   max

Connect:        0    4  99.8      0    3000

Processing:    43  299 983.0    126    9234

Waiting:        0  297 976.9    125    9234

Total:         50  304 993.5    126   12070





Percentage of the requests served within a certain time (ms)

  50%    126

  66%    129

  75%    132

  80%    134

  90%    141

  95%    616

  98%   3222

  99%   3632

 100%  12070 (longest request)