优点:提供的测试结果信息更完备;缺点:每次只能测试一个链接

概述:

ab全称是ApacheBench,是 Apache 附带的一个HTTP性能测试小工具,可以同时模拟多个并发请求。

安装:

Apache服务器套件自带ab,只要安装Apache即可,无需另行安装ab。ab位于%ApacheHome%/bin目录下(“%ApacheHome%”为Aapche安装路径),你也可以把ab.exe文件copy出来,独立使用。

基本使用:

访问www.baidu.com首页,同时处理5个并发请求,并且运行10次访问baidu首页。            /*性能测试需求*/

XXXXXXXX:~$ ab -n 10 -c 5 http://www.baidu.com/

/*启动apache ab,向www.baidu.com 总共发送10个请求(-n 10),1次发送5个(-c 5),也就是说发给www.baidu.com的请求分两批发完的。*/

操作结果:

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 www.baidu.com (be patient).....done

Server Software:        BWS/1.0

Server Hostname:        www.baidu.com

Server Port:            80

Document Path:          /

Document Length:        9777 bytes

Concurrency Level:      5                                                        /*并发数*/

Time taken for tests:   0.017 seconds                     /*整个测试持续的时间*/

Complete requests:      10                                       /*完成的请求数量*/

Failed requests:        2                                            /*失败的请求数量*/

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

Write errors:           0

Total transferred:      101688 bytes                     /*整个场景中的网络传输量*/

HTML transferred:       97786 bytes                  /*整个场景中的html内容传输量*/

/*大家最关心的指标之一,指的是吞吐率

相当于 LR 中的 每秒事务数 ,后面括号中的 mean 表示这是一个平均值*/

Requests per second:    584.39 [#/sec] (mean)    /*每秒事务数,mean表示这是一个平均值*/

/*大家最关心的指标之二,指的是用户平均请求等待时间

相当于 LR 中的 平均事务响应时间 ,后面括号中的 mean 表示这是一个平均值*/

Time per request:       8.556 [ms] (mean)                   /*每1次包含5个并发的请求时间*/

//大家最关心的指标之三,指的是服务器平均请求处理时间

Time per request:       1.711 [ms] (mean, across all concurrent requests)               /*5个并发数,其中每一个请求的时间*/

Transfer rate:          5803.22 [Kbytes/sec] received                          /*平均每秒网络上的流量,可以帮助排除是否存在网络流量过大而导致的响应时间延长的问题*/

Connection Times (ms)

min  mean[+/-sd] median   max

Connect:        0    0   0.1      0       0                      //网络连接状态

Processing:      5    7   1.6      7      10                      //网络处理状态

Waiting:        4    6   1.6      6       9                       //网络等待状态

Total:          5    7   1.6      7      10          /*这4行显示的是网络上消耗的时间的分解*/

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

50%      7

66%      7

75%      7

80%     10

90%     10

95%     10

98%     10

99%     10

100%     10 (longest request)                  /*这些内容显示的是整个场景中所有请求的响应情况,

在场景中每个请求都有一个响应时间,其中75%的用户响应时间小于7毫秒,最大响应时间小于10毫秒*/

参数说明:

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

-A auth-username:password
向服务器提供基本认证信息。用户名和密码之间由一个":"隔开,并将被以base64编码形式发送。无论服务器是否需要(即是否发送了401认证需求代码),此字符串都会被发送。

-c concurrency
一次产生的请求个数。默认是一次一个。

-C cookie-name=value
对请求附加一个"Cookie:"头行。其典型形式是 name=value 的一个参数对。此参数可以重复。

-d
不显示"percentage served within XX [ms]
table"消息(为以前的版本提供支持)。

-e csv-file
产生一个逗号分隔(CSV)文件,其中包含了处理每个相应百分比请求(从1%到100%)所需要的相应百分比时间(以微秒为单位)。由于这种格式已经"二进制化",所以比"gnuplot"格式更有用。

-g gnuplot-file
把所有测试结果写入一个"gnuplot"或者TSV(以Tab分隔)文件。此文件可以方便地导入到 Gnuplot, IDL, Mathematica, Excel中。其中的第一行为标题。

-h
显示使用方法的帮助信息。

-H custom-header
对请求附加额外的头信息。此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值(如:"Accept-Encoding: zip/zop;8bit")。

-i
执行HEAD请求,而不是GET 。

-k
启用KeepAlive功能,即在一个HTTP会话中执行多个请求。默认不启用KeepAlive功能。

-n requests
在测试会话中所执行的请求个数。默认仅执行一个请求,此时其结果不具有意义。

-p POST-file
包含了POST数据的文件。

-P proxy-auth-username:password
对一个中转代理提供基本认证信息。用户名和密码由一个":"隔开,并将被以base64编码形式发送。无论服务器是否需要(即是否发送了407代理认证需求代码),此字符串都会被发送。

-q
如果处理的请求数大于150,ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。此 -q 标记可以屏蔽这些信息。

-s
用于编译中(ab -h 会告诉你)使用了SSL的受保护的https ,而不是http协议的时候。此功能是实验性的,最好不要用。

-S
不显示中值和标准偏差值,而且在均值和中值为标准偏差值的1到2倍时,也不显示警告或出错信息。默认时,会显示最小值/均值/最大值等数值。(为以前的版本提供支持)

-t timelimit
测试所进行的最大秒数。内部隐含值是"-n 50000"。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。

-T content-type
POST数据时所使用的"Content-type"头信息。

-v verbosity
设置显示信息的详细程度,4或更大值会显示头信息,3或更大值可以显示响应代码(404,200等),2或更大值可以显示警告和其他信息。

-V
显示版本号并退出。

-w

以HTML表格形式输出结果。默认时,它是白色背景的两列宽度的一张表。

-x <table>-attributes 


设置<table>属性的字符串。此属性被填入<table 这里 > 。

-X proxy[:port]
对请求使用代理服务器。

-y <tr>-attributes
设置<tr>属性的字符串。

-z <td>-attributes
设置<td>属性的字符串。

讨论/疑问:

  • Ab的启动时间会有延时,比如设置的执行时间是5秒(-t 5),执行ab -n 1000 -c 2 -t 5 http://www.baidu.com/,那么在执行结果内查看测试的持续时间则是“Time taken for tests:   7.657 seconds”。则启动时间消耗了2秒。
  • www.douban.com/测试,首次没有失败的请求,后几次会有失败的请求,这个可能是网站的保护机制吧?

【性能测试工具】- ApacheBench的更多相关文章

  1. ApacheBench~网站性能测试工具

    对于网站性能测试来说,一般我们会使用loadrunner来实现,而它过于庞大,使我们感到有些不爽,而今天介绍的ApacheBench工具,它小而精,使用简单,效果直观,可以说,是比lr更好用的性能测试 ...

  2. 性能测试工具 转自https://yq.aliyun.com/articles/35149?spm=5176.100239.blogcont35147.8.rsow6k

    摘要: 继续这个系列的学习,这一节重点介绍目前流行的性能测试工具以及如何选择适合项目的工具.在此之前,我已经对性能测试工具的原理与架构做了分析. http://www.cnblogs.com/fnng ...

  3. 烂泥:apache性能测试工具ab的应用

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环.只有让服务器处在高压情况下,才能真正体现出软件.硬件等各种设置不当所暴露出的问题. 性能测试 ...

  4. Linux环境下apache性能测试工具ab使用详解

    网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环.只有让服务器处在高压情况下,才能真正体现出软件.硬件等各种设置不当所暴露出的问题. 性能测试工具目前最常见的有以下几种:ab.http_lo ...

  5. Web Service 性能测试工具比较

    背景 希望选择一款Web Service性能测试工具,能真实模拟大量用户访问网站时的请求,从而获取服务器当前的请求处理能力(请求数/秒).以微信服务器为例,每个用户用独立的登录token,做各种操作, ...

  6. 【转】开源性能测试工具 - Apache ab 介绍

    版权声明:本文可以被转载,但是在未经本人许可前,不得用于任何商业用途或其他以盈利为目的的用途.本人保留对本文的一切权利.如需转载,请在转载是保留此版权声明,并保证本文的完整性.也请转贴者理解创作的辛劳 ...

  7. 性能测试工具 Web Service 性能测试工具比较

    [转自]https://testerhome.com/topics/3003 背景 希望选择一款Web Service性能测试工具,能真实模拟大量用户访问网站时的请求,从而获取服务器当前的请求处理能力 ...

  8. apache性能测试工具ab

    性能测试工具目前最常见的有以下几种:ab.http_load.webbench.siege ab是apache自带的压力测试工具.ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可 ...

  9. 性能测试工具 wrk 安装与使用

    介绍 今天给大家介绍一款开源的性能测试工具 wrk,简单易用,没有Load Runner那么复杂,他和 apache benchmark(ab)同属于性能测试工具,但是比 ab 功能更加强大,并且可以 ...

  10. 性能测试工具Locust

    An open source load testing tool. 一个开源性能测试工具. define user behaviour with python code, and swarm your ...

随机推荐

  1. jQery的链式操作和商城简易导航栏

    今天要记录的是jq的一些简单操作.项目的需求是做一个导航栏,单机不同的商品名称链接,显示相应的内容.用js来写的话相对代码量要多一些,选择jqrey一行则可以搞定,下面呢是我的代码和效果图 这个是初始 ...

  2. hdfs文件系统架构详解

    hdfs文件系统架构详解 官方hdfs分布式介绍 NameNode *Namenode负责文件系统的namespace以及客户端文件访问 *NameNode负责文件元数据操作,DataNode负责文件 ...

  3. ubuntu主机名修改

    1.查看主机名 在Ubuntu系统中,快速查看主机名有多种方法: 其一,打开一个GNOME终端窗口,在命令提示符中可以看到主机名,主机名通常位于"@"符号后: 其二,在终端窗口中输 ...

  4. IE过滤器

    1.  _ 下划线属性过滤器  语法:_选择符{属性:属性值}   2. *通配符属性过滤器 语法:*选择符{属性:属性值}   3.  \9: IE版本识别:其他浏览器都不识别 语法:选择符{属性: ...

  5. HDOJ 2209 贪心

    翻纸牌游戏 Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  6. C#内置函数 RunSql的使用

    作用批量执行sql语句 表达式.RunSQL(SQLStatement,UseTransaction) 表达式.一个代表DoCmd对象的变量. 注释:sqlstatement参数的最大长度为 32,7 ...

  7. 快学Scala之特质

    一个Scala类可以继承多个特质(trait), 特质可能会要求使用它们的类支持某个特定特性, 与Java接口不同, Scala特质可以给出这些特质的缺省实现. 要点如下: Scala中类只能继承一个 ...

  8. SSH中的Invalid action class configuration that references an unknown class named.......

    最近用SSH框架做项目的时候页面提交数据到后台,遇到了这个问题,百度了一下,网上的解决办法无非两种: 1.检查struts.xml  ,applicationContext.xml的配置是否正确 2. ...

  9. DOM0级事件处理、DOM2级事件处理

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. Java版 QQ空间自动登录无需拷贝cookie一天抓取30WQQ说说数据&流程分析

    QQ空间说说抓取难度比较大,花了一个星期才研究清楚! 代码请移步到GitHub GitHub地址:https://github.com/20100507/Qzone [没有加入多线程,希望你可以参与进 ...