
在Apache服务器的套件中,有一个叫做 ab (ApacheBench) 的工具。
ApacheBench 主要是用来测试Apache服务器执行效率用的
ApacheBench 可以针对某个特定的 URL 仿真出连续的联机请求
同时还可以仿真出同时间点数个相同的联机请求,因此利用 ApacheBench 可帮助我们在网站开发期间仿真实际上线可能的情况,利用仿真出来的数据做为调整服务器设定或程序的依据。
参数说明
 
| 01 | bixiaopeng@172-13-3-157 ~$ ab -h | 
 
| 02 | Usage: ab [options] [http[s]://]hostname[:port]/path | 
 
| 04 | //-n在测试会话中所执行的请求个数。默认时,仅执行一个请求 | 
 
| 05 |    -n requests     Number of requests to perform | 
 
| 06 | //-c一次产生的请求个数。默认是一次一个。 | 
 
| 07 |    -c concurrency  Number of multiple requests to make | 
 
| 08 | //-t测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。 | 
 
| 09 |    -t timelimit    Seconds to max. wait forresponses | 
 
| 11 |    -b windowsize   Size of TCP send/receivebuffer, inbytes | 
 
| 13 |    -p postfile     File containing data to POST. Remember also to set-T | 
 
| 15 |    -u putfile      File containing data to PUT. Remember also to set-T | 
 
| 16 | //-TPOST数据所使用的Content-type头信息。 | 
 
| 17 |    -T content-typeContent-typeheader forPOSTing, eg. | 
 
| 18 |                    'application/x-www-form-urlencoded' | 
 
| 19 |                    Default is 'text/plain' | 
 
| 20 | //-v设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。 | 
 
| 21 |    -vverbosity    How much troubleshooting info to print | 
 
| 22 | //-w以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。 | 
 
| 23 |    -w              Print out results inHTML tables | 
 
| 25 |    -i              Use HEAD instead of GET | 
 
| 26 |    -x attributes   String to insert as table attributes | 
 
| 27 |    -y attributes   String to insert as trattributes | 
 
| 28 |    -z attributes   String to insert as td or th attributes | 
 
| 29 | //-Ccookie-name=value 对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。此参数可以重复。 | 
 
| 30 |    -C attribute    Add cookie, eg. 'Apache=1234. (repeatable) | 
 
| 31 |    -H attribute    Add Arbitrary header line, eg. 'Accept-Encoding: gzip' | 
 
| 32 |                    Inserted after all normal header lines. (repeatable) | 
 
| 33 |    -A attribute    Add Basic WWW Authentication, the attributes | 
 
| 34 |                    are a colon separated username and password. | 
 
| 35 | //-Pproxy-auth-username:password 对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。 | 
 
| 36 |    -P attribute    Add Basic Proxy Authentication, the attributes | 
 
| 37 |                    are a colon separated username and password. | 
 
| 38 |    -X proxy:port   Proxyserver and port number to use | 
 
| 39 |    -V              Print version number and exit | 
 
| 40 |    -k              Use HTTP KeepAlive feature | 
 
| 41 |    -d              Do not show percentiles served table. | 
 
| 42 |    -S              Do not show confidence estimators and warnings. | 
 
| 43 |    -g filename     Output collected data to gnuplot formatfile. | 
 
| 44 |    -e filename     Output CSV filewith percentages served | 
 
| 45 |    -r              Don't exiton socket receive errors. | 
 
| 46 |    -h              Display usage information (this message) | 
 
| 47 |    -Z ciphersuite  Specify SSL/TLScipher suite (See openssl ciphers) | 
 
| 48 |    -f protocol     Specify SSL/TLSprotocol (SSL2, SSL3, TLS1, or ALL) | 
 
| 50 | //-attributes设置 属性的字符串. 缺陷程序中有各种静态声明的固定长度的缓冲区。另外,对命令行参数、服务器的响应头和其他外部输入的解析也很简单,这可能会有不良后果。它没有完整地实现 HTTP/1.x; 仅接受某些'预想'的响应格式。 strstr(3)的频繁使用可能会带来性能问题,即, 你可能是在测试ab而不是服务器的性能。 | 
   
举个栗子
参数很多,一般我们用 -c 和 -n 参数就可以了. 例如:
| 01 | bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ab -c 10 -n 1000 http://www.wirelessqa.com/?p=143 | 
 
| 02 | This is ApacheBench, Version 2.3 <$Revision: 655654 $> | 
 
| 03 | Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ | 
 
| 04 | Licensed to The Apache Software Foundation, http://www.apache.org/ | 
 
| 07 | Benchmarking www.wirelessqa.com (be patient) | 
 
| 08 | Completed 100 requests | 
 
| 09 | Completed 200 requests | 
 
| 10 | Completed 300 requests | 
 
| 11 | Completed 400 requests | 
 
| 12 | Completed 500 requests | 
 
| 13 | Completed 600 requests | 
 
| 14 | Completed 700 requests | 
 
| 15 | Completed 800 requests | 
 
| 16 | Completed 900 requests | 
 
| 17 | Completed 1000 requests | 
 
| 18 | Finished 1000 requests | 
 
| 24 | Server Hostname:        www.wirelessqa.com | 
 
| 28 | Document Path:          /?p=143 | 
 
| 29 | Document Length:        40865 bytes | 
 
| 33 | Time taken fortests:   349.234 seconds | 
 
| 34 | Complete requests:      1000 | 
 
| 36 |   (Connect: 0, Receive: 0, Length: 674, Exceptions: 0) | 
 
| 38 | Total transferred:      41114189 bytes | 
 
| 39 | HTML transferred:       40889965 bytes | 
 
| 40 | Requests per second:    2.86 [#/sec] (mean) | 
 
| 41 | Time per request:       3492.343 [ms] (mean) | 
 
| 42 | Time per request:       349.234 [ms] (mean, across all concurrent requests) | 
 
| 43 | Transfer rate:          114.97 [Kbytes/sec] received | 
 
| 47 |              min  mean[+/-sd] median   max | 
 
| 48 | Connect:       35  161 401.6     59    3394 | 
 
| 49 | Processing:   571 3282 2723.1   2648   28374 | 
 
| 50 | Waiting:      309  654 767.3    538   21420 | 
 
| 51 | Total:        610 3443 2777.4   2826   28514 | 
 
| 54 | Percentage of the requests served within a certain time(ms) | 
 
| 63 | 100%  28514 (longest request) | 
   
结果:在同一时间有10个访问请求的情况下,完成1000次请求,失败674次,共花时间349.234秒,这个页面每秒平均处理2.86个请求
具体分析
| 01 | //-c每次发送10个,-n 共发送1000次请求 | 
 
| 03 | bixiaopeng@bixiaopengtekiMacBook-Pro ~$ ab -c 10 -n 1000 http://www.wirelessqa.com/?p=143 | 
 
| 04 | This is ApacheBench, Version 2.3 <$Revision: 655654 $> | 
 
| 05 | Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ | 
 
| 06 | Licensed to The Apache Software Foundation, http://www.apache.org/ | 
 
| 08 | Benchmarking www.wirelessqa.com (be patient) | 
 
| 09 | Completed 100 requests | 
 
| 10 | Completed 200 requests | 
 
| 11 | Completed 300 requests | 
 
| 12 | Completed 400 requests | 
 
| 13 | Completed 500 requests | 
 
| 14 | Completed 600 requests | 
 
| 15 | Completed 700 requests | 
 
| 16 | Completed 800 requests | 
 
| 17 | Completed 900 requests | 
 
| 18 | Completed 1000 requests | 
 
| 19 | Finished 1000 requests | 
 
| 24 | Server Hostname:        www.wirelessqa.com | 
 
| 29 | Document Path:          /?p=143 | 
 
| 31 | Document Length:        40865 bytes | 
 
| 36 | Time taken fortests:   349.234 seconds | 
 
| 38 | Complete requests:      1000 | 
 
| 40 | //Failedrequests给出了失败原因统计: | 
 
| 41 | //Connect:无法送出请求,目标主机连接失败,要求过程中连线被中断 | 
 
| 42 | //Length:回应的内容长度不一致,以content-Length头文件为判断依据 | 
 
| 43 | //Exception:发生了无法预期的错误 | 
 
| 44 | //备注1:这里分析一下为何失败了674次,从下面的统计数据我们可以看出,失败请求都落在Length上面,原因是被测网页是动态内容,当第一次发出HTTP request与后面发出的HTTP request所响应的html Length是不同大小的(即每次响应的Content-Length大小不一致),所以才会引起Length失败,这里Length是以第一次取得的Content-Length为主,以后得到的Content-Length跟第一次的不一致,就会报Length错误,所以这类Length大小不一的失败在测试动态面面的压力测试中是合理的,可以不用管它。 | 
 
| 46 |   (Connect: 0, Receive: 0, Length: 674, Exceptions: 0) | 
 
| 50 | Total transferred:      41114189 bytes | 
 
| 52 | //备注2:单个html文件的大小为40865,共发出1000次请求,40865000跟40889965差不多,所以1000次请求应该已经正确送出,没什么问题 | 
 
| 53 | HTML transferred:       40889965 bytes | 
 
| 54 | //关键指标之一,相当于 LR 中的 每秒事务数 ,后面括号中的 mean 表示这是一个平均值 | 
 
| 55 | Requests per second:    2.86 [#/sec] (mean) | 
 
| 56 | //关键指标之二,相当于 LR 中的 平均事务响应时间 ,后面括号中的 mean 表示这是一个平均值 | 
 
| 57 | Time per request:       3492.343 [ms] (mean) | 
 
| 58 | //每个请求实际运行时间的平均值,就是上面的时间 除以并发数 | 
 
| 59 | Time per request:       349.234 [ms] (mean, across all concurrent requests) | 
 
| 62 | //平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题 | 
 
| 63 | Transfer rate:          114.97 [Kbytes/sec] received | 
 
| 67 |              min  mean[+/-sd] median   max | 
 
| 68 | Connect:       35  161 401.6     59    3394 | 
 
| 69 | Processing:   571 3282 2723.1   2648   28374 | 
 
| 70 | Waiting:      309  654 767.3    538   21420 | 
 
| 71 | Total:        610 3443 2777.4   2826   28514 | 
 
| 73 | //整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于2826 毫秒,66% 的用户响应时间小于3636 毫秒,最大的响应时间小于28514毫秒 | 
 
| 74 | Percentage of the requests served within a certain time(ms) | 
 
| 75 |  50%   2826 //就是有50%的请求都是在2826ms内完成的 | 
 
| 83 | 100%  28514 (longest request) | 
 
   
   												
												
						- Gatling新一代压力测试工具,新一代服务器性能测试工具Gatling
		Gatling新一代压力测试工具新一代服务器性能测试工具Gatlinghttp://www.infoq.com/cn/articles/new-generation-server-testing-to ... 
- 性能测试工具 Web Service 性能测试工具比较
		[转自]https://testerhome.com/topics/3003 背景 希望选择一款Web Service性能测试工具,能真实模拟大量用户访问网站时的请求,从而获取服务器当前的请求处理能力 ... 
- linux常用命令:Linux 文件类型与扩展名
		Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念.我们通过一般应用程序而创建的比如file.txt.file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文 ... 
- linux常用命令:Linux 目录结构
		对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ... 
- linux常用命令:Linux 文件属性详解
		Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容.具体情况如下: 命令:  ls -lih 输出: [root@loc ... 
- Linux常用命令汇总 - Linux Shell Cheat Sheet
		1. 查看Linux操作系统信息: uname -a cat /proc/version lsb_release -a 2. 设置ls显示的文件夹的颜色(将下面这条目录加在 .bashrc 文件最后) ... 
- http_load(基于linux平台的一种性能测试工具)
		http_load  是运行在linux操作系统上的命令行测试工具, 用来对网站做压力测试.http_load以并行复用的方式运行,用以测试web服务器的吞吐量和负载.但是它不同于大多数压力测试工具, ... 
- linux主机上,UnixBench性能测试工具使用
		1,下载  wget http://soft.laozuo.org/scripts/UnixBench5.1.3.tgz [root@VM_0_15_centos test]# [root@VM_0_ ... 
- Linux常用命令03
		上篇我们写到,如何编辑文件,我们有时候,在编辑的时候,有可能会异常的退出,这样的话, linux会针对这个文件生成一个swp文件,当你下次进入vi模式时,就会提示你一个错误 这样,即使你按enter键 ... 
- 菜鸟之路——Linux基础::计算机网络基础,Linux常用系统命令,Linux用户与组权限
		最近又重新安排了一下我的计划.准备跟着老男孩的教程继续学习,感觉这一套教程讲的很全面,很详细.比我上一套机器学习好的多了. 他的第一阶段是Python基础,第二阶段是高等数学基础,主要将机器学习和深度 ... 
随机推荐
	
									- Error NO.2013 Lost connection to Mysql server during query
			系统:[root@hank-yoon ~]# cat /etc/redhat-release CentOS release 6.3 (Final) DB版本:mysql> select @@ve ... 
- 【netstream】探索数据传输对象1
			什么是“从当前流中读取一个字符串.字符串有长度前缀,一次 7 位地被编码为整数.” 来探索一下: 写一段简单的程序: FileStream fs= new FileStream("d:\\q ... 
- Linux流量监控工具 - iftop (最全面的iftop教程)
			在类Unix系统中可以使用top查看系统资源.进程.内存占用等信息.查看网络状态可以使用netstat.nmap等工具.若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop. 一.if ... 
- [转]adb pull  Permission denied及no such file错误
			adb pull  Permission denied及no such file错误 http://www.the8m.com/blog/article/javadk/adbpull.html XP系 ... 
- NP完全问题
			1.概念 好算法:Edmonds与1975年提出:具有多项式时间(O(nk)的算法为好算法. P类问题:存在多项式时间算法的问题.如:货郎问题.调度问题.最大团问题.最大独立集问题.Steiner树问 ... 
- 怎样在cmd(命令提示符)下进行复制粘贴操作
			如右图,右键命令提示符窗口的标题栏,选择属性.     选择“编辑选项”里的“快速编辑模式”,并确定之:   在弹出的应用选择提示框上选择“保存属性,供以后具有相同标题的窗口使用”:   如此你就可以 ... 
- 【学习总结】iOS 数据保存几种方式总结
			在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题.将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好.下面介绍一下数据保存的方式: NSKeyedAr ... 
- Quartz.net 的开源任务管理平台
			Quartz.net 的开源任务管理平台 前面总结了很多,关于Quartz.net 的文章,介绍了如何使用Quartz.net.不清楚的朋友,可以看我之前的系列文章,http://www.cnblog ... 
- segment fault
			http://blog.chinaunix.net/uid-23069658-id-3959636.html 
- Matlab中unifrnd函数使用解析
			1.生成N阶[a,b]均匀分布数组 >> unifrnd(3,5,5,5) ans = 3.8651 4.6677 4.8115 4.3456 4.8560 4.0241 3.4079 3 ...