• 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)

  • 相关阅读:
    Tomcat笔记
    HAProxy简介
    Ansible简介与实验
    DHCP&PXE&Cobbler简单实现
    Keepalived实现LVS-DR集群高可用
    Web of Science爬虫(WOS、SCI):风车WOS下载器
    梦境时分,记录梦境
    基层码农谈领导力
    企业部署 Kubernetes 的终极目标是什么
    Scrum 敏捷实践中的三大角色
  • 原文地址:https://www.cnblogs.com/catkins/p/5270425.html
Copyright © 2020-2023  润新知