zoukankan      html  css  js  c++  java
  • AB Test 压力测试工具使用整理

    Apache Bench,是 Apache 自带的压力测试工具。a可以对服务器进行访问压力测试。
    系统安装 Apache Server,自带 ab 命令。

    1. 概念

    1. 吞吐率:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
    2. 并发连接数:某一时刻服务器所接受的请求数(会话数)。
    3. 并发用户数:某一时刻服务器所接受的连接数,一个用户可能同时产生多个连接。
    4. 用户平均请求等待时间:总请求数 / 并发用户数。
    5. 服务器平均请求等待时间:处理完成所有请求数所花费的时间 / 总请求数。

    2. 命令

    ➜  ~ ab
    ab: wrong number of arguments
    Usage: ab [options] [http[s]://]hostname[:port]/path
    Options are:
        # 本次测试所发的总请求数
        -n requests     Number of requests to perform
        # 
        -c concurrency  Number of multiple requests to make at a time
        -t timelimit    Seconds to max. to spend on benchmarking
                        This implies -n 50000
        -s timeout      Seconds to max. wait for each response
                        Default is 30 seconds
        -b windowsize   Size of TCP send/receive buffer, in bytes
        -B address      Address to bind to when making outgoing connections
        -p postfile     File containing data to POST. Remember also to set -T
        -u putfile      File containing data to PUT. Remember also to set -T
        -T content-type Content-type header to use for POST/PUT data, eg.
                        'application/x-www-form-urlencoded'
                        Default is 'text/plain'
        -v verbosity    How much troubleshooting info to print
        -w              Print out results in HTML tables
        -i              Use HEAD instead of GET
        -x attributes   String to insert as table attributes
        -y attributes   String to insert as tr attributes
        -z attributes   String to insert as td or th attributes
        -C attribute    Add cookie, eg. 'Apache=1234'. (repeatable)
        -H attribute    Add Arbitrary header line, eg. 'Accept-Encoding: gzip'
                        Inserted after all normal header lines. (repeatable)
        -A attribute    Add Basic WWW Authentication, the attributes
                        are a colon separated username and password.
        -P attribute    Add Basic Proxy Authentication, the attributes
                        are a colon separated username and password.
        -X proxy:port   Proxyserver and port number to use
        -V              Print version number and exit
        -k              Use HTTP KeepAlive feature
        -d              Do not show percentiles served table.
        -S              Do not show confidence estimators and warnings.
        -q              Do not show progress when doing more than 150 requests
        -l              Accept variable document length (use this for dynamic pages)
        -g filename     Output collected data to gnuplot format file.
        -e filename     Output CSV file with percentages served
        -r              Don't exit on socket receive errors.
        -m method       Method name
        -h              Display usage information (this message)
        -I              Disable TLS Server Name Indication (SNI) extension
        -Z ciphersuite  Specify SSL/TLS cipher suite (See openssl ciphers)
        -f protocol     Specify SSL/TLS protocol
                        (TLS1, TLS1.1, TLS1.2 or ALL)

    3. 测试示例

    3.1 基础访问测试

    ab -n 1000 -c 10 http://cms.test.com/

    测试结果如下

    Server Software:
    Server Hostname:        cms.kaleidoapp.cn
    Server Port:            80
    
    Document Path:          /
    Document Length:        2746 bytes
    
    Concurrency Level:      10
    Time taken for tests:   8.352 seconds
    Complete requests:      1000
    Failed requests:        0
    Total transferred:      2981000 bytes
    HTML transferred:       2746000 bytes
    Requests per second:    119.74 [#/sec] (mean)
    Time per request:       83.517 [ms] (mean)
    Time per request:       8.352 [ms] (mean, across all concurrent requests)
    Transfer rate:          348.57 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:       29   39  11.2     37     173
    Processing:    33   43  12.0     42     190
    Waiting:       32   43  12.0     41     189
    Total:         62   82  17.8     79     226
    
    Percentage of the requests served within a certain time (ms)
      50%     79
      66%     84
      75%     89
      80%     90
      90%     93
      95%     96
      98%    135
      99%    197
     100%    226 (longest request)

    结果可以看出:

    1. 吞吐率:119.74
    2. 整个测试持续的时间:8.352s
    3. 完成的请求数:1000
    4. 失败的请求数:0
    5. 总的网络传输量:2981000 bytes
    6. HTML内容传输量:2746000 bytes
    7. 用户平均请求等待时间:83.517 ms
    8. 服务器平均请求处理时间:8.352 ms
    9. 平均每秒网络上的流量:348.57 kb

    网络消耗时间分解

    展示最小、平均、方差、中位值、最大值。

    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:       29   39  11.2     37     173
    Processing:    33   43  12.0     42     190
    Waiting:       32   43  12.0     41     189
    Total:         62   82  17.8     79     226

    请求处理时间分布

    可以看出,95% 的请求用时在 95ms 以内,最长请求时间为 226ms。

    Percentage of the requests served within a certain time (ms)
      50%     79
      66%     84
      75%     89
      80%     90
      90%     93
      95%     96
      98%    135
      99%    197
     100%    226 (longest request)

    3.2 接口请求

    ab -n 1000 -c 10 -p 'list.json' -T 'application/json' -H 'Authorization: token' -s 10 http://api.test.com/app/v1/list

    说明:

    -p 代表的是入参的 json 文件,或是 text 的键值对
    -T 代表 contentType
    -H 代表的是 http header 信息
    -s 代表的是超时时间,单位是秒,默认是 30s
  • 相关阅读:
    隐式图回溯法之八皇后问题解答
    试用O(n)来实现求出一个无序数组的中位数
    C++学习第一弹: const 指针 引用答疑
    一道面试题的解答_骑士获得金币问题
    根据已知词表选出好词(直通车)
    python3.5爬虫完成笔趣阁小说的爬取
    关于_水木社区[日经题]_10只狗鉴别1000瓶中哪一瓶药有毒_的解答思路
    数据库想法整合,多表联立交互
    [网络推广]直通车学习
    3行实现模糊匹配
  • 原文地址:https://www.cnblogs.com/qiumingcheng/p/15006220.html
Copyright © 2011-2022 走看看