zoukankan      html  css  js  c++  java
  • apache 自带的ab.exe 测试网站的并发量(网站压力测试)

    AB(ApacheBench) 是 Apache 自带的超文本传输协议 (HTTP) 性能测试工具。 其设计意图是描绘当前所安装的 Apache 的执行性能, 主要是显示 Apache 每秒可以处理多少个请求。

    该工具是 Apache 自带的工具。 安装了 Apache Http Server , 就有了 ab.exe 程序。

    安装完后,在 apache 的 Bin 目录下有 ab.exe 程序。 这个就是我们的 AB 工具。

    AB 工具的使用方法:

    C: >cd C:Program Files (x86)Apache Software FoundationApache2.2in

    C:Program Files (x86)Apache Software FoundationApache2.2in>ab

    ab: wrong number of arguments

    Usage: ab [options] [http://]hostname[:port]/path

    Options are:

        -n requests     Number of requests to perform

        -c concurrency  Number of multiple requests to make

        -t timelimit    Seconds to max. wait for responses

        -b windowsize   Size of TCP send/receive buffer, in bytes

        -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 for POSTing, 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.

        -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.

        -h              Display usage information (this message)

    C:Program Files (x86)Apache Software FoundationApache2.2in>

    示例:

    C:Program Files (x86)Apache Software FoundationApache2.2in>ab -n 1000 -c 50 http://blog.csdn.net/tianlesoftware/archive/2010/05/25/5622268.aspx

    -- 注意, 这里要写一个具体的页面

    This is ApacheBench, Version 2.3 <$Revision: 655654 $>

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

    Licensed to The Apache Software Foundation, http://www.apache.org/

    Benchmarking blog.csdn.net (be patient)

    Completed 100 requests

    Completed 200 requests

    Completed 300 requests

    Completed 400 requests

    Completed 500 requests

    Completed 600 requests

    Completed 700 requests

    Completed 800 requests

    Completed 900 requests

    Completed 1000 requests

    Finished 1000 requests

    Server Software:        nginx/0.7.65

    Server Hostname:        blog.csdn.net

    Server Port:            80

    Document Path:      /tianlesoftware/archive/2010/05/25/5622268.aspx -- 请求资源

    Document Length:        169 bytes  -- 文档返回的长度,不包括相应头

    Concurrency Level:      50  -- 并发个数

    Time taken for tests:   118.549 seconds  -- 请求消耗总时间

    Complete requests:      1000  -- 总请求数

    Failed requests:        1

       (Connect: 1, Receive: 0, Length: 0, Exceptions: 0)

    Write errors:           0

    Non-2xx responses:      1000

    Total transferred:      334000 bytes

    HTML transferred:       169000 bytes

    Requests per second:    8.44 [#/sec] (mean)  -- 平均每秒请求数

    Time per request:       5927.439 [ms] (mean)   -- 平均每个请求时间

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

                                              -- 平均每个请求时间除以并发数, 这里是 5927.439/50

    Transfer rate:          2.75 [Kbytes/sec] received   -- 时间传输速率

    Connection Times (ms)

                  min  mean[+/-sd] median   max

    Connect:       47   97  72.8     63     742

    Processing:    57 5720 4597.9   4666   25381

    Waiting:       54 2711 3312.5   2128   25176

    Total:        112 5817 4595.1   4754   25435

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

      50%   4754   --

      66%   5491

      75%   6005

      80%   6274

      90%   7366

      95%   8697

      98%  25232

      99%  25415

      100%  25435 (longest request)

    C:Program Files (x86)Apache Software FoundationApache2.2in>

    含义:   同时处理 50 个并发请求并运行 1000 次 :

           /tianlesoftware/archive/2010/05/25/5622268.aspx

    结果:   在并发 50 个请求的情况下,完成 1000 次的访问请求,共花了 118.549 秒,这个程序每秒可处理 8.44 个请求。

    1,使用ab,发送post数据:

    apachebench网上的资料很多
    但是甚至包括国外的文章以及官方文档
    出了help显示的内容之外就没有任何一丁点更详细些的内容了
    要使用ab进行post数据测试.从help可以看出我们需要定义两个内容
    一个是-p参数.指定需要post的数据
    还有一个是-T参数,指定使用的content-type
    我在服务器端简单的写了一个脚本.将获取到的post请求输出到文件


    <?php
    echo $_REQUEST['test'];
    $file=fopen('/data/www/log.txt','a+');
    fwrite($file,date("Y-m-d H:i:s"));
    fwrite($file,$_REQUEST['test']);
    fclose($file);
    ?>


    然后在本地生成post.txt文件
    内容为test=abc
    使用ab进行测试
    ab -n 1 -p post.txt http://192.168.0.2/test.php
    发现服务器端接受到了请求,但是没有受到post的数据
    使用类型之后.也还是不行
    ab -n 1 -p post.txt -T ‘text/html’ http://192.168.0.2/test.php
    使用get方式测试
    ab -n 1 http://192.168.0.2/test.php?test=abc
    服务器端则可以正常工作
    和开始说的一样.翻烂了google也没有找到
    最后只能用wireshark抓包
    最后发现content-type一定要设置成为
    application/x-www-form-urlencoded
    最后如下测试.才最后通过
    ab -n 1 -p post.txt -T ‘application/x-www-form-urlencoded’ http://192.168.0.2/test.php
    还有postfile
    如果有多条记录
    内容可以写成
    test1=a&test2=b
    类似这样即可
    这个也是文档中没有提及的,让我一开始以为postfile的格式有误.
    网上有提到过一种格式
    test1=a
    test2=b
    这种是不对的
    这样的ab会把整个 
    a回车test2=b
    当作test1这个field传送出去

    2,使用ab发送get数据

    直接将url地址,加双引号如果”"http://test.qq/?c=index&r=104717283&sid=dShRB6zkP0twTOOwIim5“

  • 相关阅读:
    使用mybatis报错constructor found in com.atguigu.mybatis.bean.Department matching [java.lang.Integer, java.lang.String]
    mybatis报错 Error instantiating interface com.atguigu.mybatis.dao.DepartmentMapper with invalid types () or values ()
    报错Mapped Statements collection does not contain value for com.atguigu.mybatis.dao.EmployeeMapperPlus
    mybatis学习(2)
    resultType没有指定就会报错
    使用Mybatis时报错Cause: java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
    Oracle操作ORA-02289: 序列不存在
    在数据库中添加数据以后,使用Mybatis进行查询结果为空
    program
    codevs4817 江哥的dp题d
  • 原文地址:https://www.cnblogs.com/shgq/p/4056894.html
Copyright © 2011-2022 走看看