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

概述:

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. 【故障处理】ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

    今天在使用冷备份文件重做从库时遇到一个报错,值得研究一下. 版本:MySQL5.6.27 一.报错现象 dba:(none)> start slave; ERROR (HY000): Slave ...

  2. php 批量进行复制文件

    php 批量进行复制文件 1.前言 目标:php批量进行复制指定的目录文件夹下所有文件复制到另一个文件夹下 所使用的的php函数:is_dir,opendir,readdir,scandir,mkdi ...

  3. Android - 读取XML文件中的数据

    读取XML中存储的数据.将xmlfile.xml存放在assets文件夹中.在activity_main.xml中创建一个textview,用来显示读取到的数据. XML文件内容如下:xmlfile. ...

  4. install.php文件建表时设置编码方式

    DROP TABLE IF EXISTS `".$db_prefix."adminlog`;CREATE TABLE `".$db_prefix."adminl ...

  5. FreeRTOS——错误排查

    1. printf-stdarg.c 在调用标准库函数时,栈空间的用量可能急剧上升,特别是IO与字符串处理函数,比如 sprintf(). 在FreeRTOS下载包中有一个名为printf-stdar ...

  6. android 7.0 多渠道打包 - 美团开源工具Walle 命令行打包

    在Android 7.0(Nougat)推出了新的应用签名方案APK Signature Scheme v2后,之前快速生成渠道包的方式(美团Android自动化之旅-生成渠道包)已经行不通了,对此美 ...

  7. 将java对象转成json字符串

    如果要将数组.对象.Map.List转换成JSON数据,那我们需要一些jar包: json-lib-2.4-jdk15.jar ezmorph-1.0.6.jar commons-logging.ja ...

  8. vue数据驱动作用域问题

    需求是这样的,如图 点击禁用后,变成启用,但是结果却不让人满意 我们先来看一下错误代码: //conponet控件里的内容 html内容: <div> <button @click. ...

  9. CentOS 7.3.1611系统安装配置图解教程

    操作系统:CentOS 7.3.1611 IP地址:192.168.21.130 网关:192.168.21.2 DNS:8.8.8.8 8.8.4.4 备注: CentOS 7.x系列只有64位系统 ...

  10. ES6中的类

    前面的话 大多数面向对象的编程语言都支持类和类继承的特性,而JS却不支持这些特性,只能通过其他方法定义并关联多个相似的对象,这种状态一直延续到了ES5.由于类似的库层出不穷,最终还是在ECMAScri ...