zoukankan      html  css  js  c++  java
  • 网站性能测试工具Apache Benchmark的使用说明

    http://httpd.apache.org/docs/2.0/programs/ab.html

    在网站开发中,有时候需要对网站进行性能测试,知道网站在一定的并发访问下的响应时间等情况,这里介绍Apache的一个工具,Apache Benchmark,可以比较方便的对网站做一些性能测试

    简介:

    Apache Benchmark是Apache的http服务器httpd的附带软件,到http://httpd.apache.org/下载httpd服务器,安装完成后,会在bin目录下找到ab.exe,

    运行ab –h,可以看到ab的完整说明如下

    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)

    对于最基本的使用,假设本地有一个http://localhost/phptest.php显示phpinfo,可以使用-c和-n参数,

    运行如下命令测试当并发请求是10个,总共请求是100个的时候的性能数据,

    ab -n 1000 -c 100 http://localhost/phptest.php

    该测试在我本机结果如下:

    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 localhost (be patient)

    Server Software:        Apache/2.2.14

    Server Hostname:        localhost

    Server Port:            80

    Document Path:          /phptest.php

    Document Length:        43931 bytes

    Concurrency Level:      100

    Time taken for tests:   7.563 seconds

    Complete requests:      1000

    Failed requests:        0

    Write errors:           0

    Total transferred:      44099000 bytes

    HTML transferred:       43931000 bytes

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

    Time per request:       756.250 [ms] (mean)

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

    Transfer rate:          5694.60 [Kbytes/sec] received

    Connection Times (ms)

    min  mean[+/-sd] median   max

    Connect:        0    4  16.3      0     469

    Processing:   203  706 247.4    656    1547

    Waiting:      172  381 168.9    328    1125

    Total:        203  710 248.1    656    1563

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

    50%    656

    66%    688

    75%    688

    80%    719

    90%   1172

    95%   1375

    98%   1422

    99%   1453

    100%   1563 (longest request)

    结果比较简单,重点是红色部分,意思是说在100个并发请求下,完成1000个请求,总共需要7.5秒,1000个请求全部完成,没有失败;其中,平均用时710毫秒,标准差是248毫秒,中位数【就是50%请求时间】是656毫秒,90%请求时间是1172毫秒,就是1.172秒,最慢的请求用了1.563秒;

    基本上,可以通过调整这-n和-c两个参数来确定系统可以支撑的并发量。

    另外,如果是动态页面,比如需要登陆以后才能看到的页面,可以先在Firefox中打开页面,然后通过firebug查看session相关的Cookie,然后使用-C的参数指定,就可以假定用户登陆了:

    ab -c 100 -n 1000 -C JSESSIONID=1CBDB188AB4C901C2C3DC2C5BAEA1F47 http://localhost:9080/myapp

    当然,ab还有很多缺陷,比如不能模拟多种不同类型的用户做不同的操作,不能模拟实际的用户思考时间等,缺乏图形化的工具显示结果等等。其他有些工具克服了这些缺陷。

  • 相关阅读:
    为Qtcreator 编译的程序添加管理员权限
    热备,冷备,云备
    最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备
    进入2012 -- 回顾我走过的编程之路
    为什么中国程序员水平一直上不了层次?无非是这些原因!
    我是如何失去团队掌控的?
    后端开发甩锅奥义
    一个线程oom,进程里其他线程还能运行吗?
    架构师必备,带你弄清混乱的JAVA日志体系!
    IDEA一定要改的八条配置
  • 原文地址:https://www.cnblogs.com/buffer/p/1965494.html
Copyright © 2011-2022 走看看