ab测试 uwsgi遇到的问题

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


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)

posted @ 2014-08-01 13:59  唐僧吃肉  阅读(663)  评论(0编辑  收藏  举报