Apache Bench 工具介绍
如未特别标明,文章均属原创。转载请注明出处 by : 柳公子 http://huliuqing.github.io
apache benchmark(以下简称ab)是一款基准测试工具,用于描绘当前安装的apache服务器的执行性能,是apache安装的一部分。用户可以模拟对特定URL的任意数量请求来对Web服务器进行负载测试,观察你的apache服务器每秒可以处理多少请求。
ab工具提供以下信息:
- 传输的总大小
- Web服务器在模拟流量下每秒可以支持的请求总数
- 完成一个请求所花费的最长时间
- 完成一个请求所花费的最少时间
ab语法
ab
[-A auth-username:password]
[-c concurrency]
[-C cookie-name=value]
[-d]
[-e csv-file]
[-g gnuplot-file]
[-h]
[-H custom-header]
[-i]
[-k]
[-n requests]
[-p POST-file]
[-P proxy-auth-username:password]
[-q]
[-s]
[-S]
[-t timelimit]
[-T content-type]
[-v verbosity]
[-V]
[-w]
[-x <table>-attributes]
[-X proxy[:port]]
[-y <tr>-attributes]
[-z <td>-attributes]
[http://]hostname[:port]/path
ab选项标记
-A auth-username:password
向服务器提供基本认证信息。用户名和密码之间由一个":"隔开,并将被以base64编码形式发送。无论
服务器是否需要(即是否发送了401认证需求代码),此字符串都会被发送。
-c concurrency
一次产生的请求个数。默认设置为1。
-C cookie-name=value
对请求附加一个"Cookie:"头行。其典型形式是 name=value 的一个参数对。此参数可以重复。
-d
不显示"percentage served within XX [ms] table"消息(为以前的版本提供支持)。
-e csv-file
产生一个逗号分隔(CSV)文件,该文件包含基准测试的运行结果(其中包含了处理每个相应
百分比[Percentage served]请求(从1%到100%)所需要的相应百分比时间[Time in ms](以微
秒为单位))。由于这种格式已经"二进制化",所以比"gnuplot"格式更有用。
-g gnuplot-file
把所有测试结果写入一个"gnuplot"或者TSV(以Tab分隔)文件。此文件可以方便地导入到 Gnuplot,
IDL, Mathematica, Excel中。其中的第一行为标题。
-h
显示要用于ab的选项列表。
-H custom-header
对请求附加额外的头信息。此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段
和值(如:"Accept-Encoding: zip/zop;8bit")。
-i
执行HEAD请求,而不是默认的GET请求 。
-k
启用KeepAlive功能,即在一个HTTP会话中执行多个请求。默认不启用KeepAlive功能。
-n requests
在测试会话中所执行的请求个数。默认仅执行一个请求,此时其结果不具有意义,n值最大为50000。
-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工具
现在我们要运行ab工具来对http://www.github.com来进行基准测试。 运行如下命令:
ab -n 1 http://www.github.com/
输出结果如下
Server Software:
Server Hostname: www.github.com
Server Port: 80
#服务器信息
Document Path: /
Document Length: 0 bytes
#文档信息
Concurrency Level: 1
Time taken for tests: 1.651 seconds
Complete requests: 1
Failed requests: 0
Write errors: 0
Non-2xx responses: 1
Total transferred: 107 bytes
HTML transferred: 0 bytes
Requests per second: 0.61 [#/sec] (mean)
Time per request: 1650.709 [ms] (mean)
Time per request: 1650.709 [ms] (mean, across all concurrent requests)
Transfer rate: 0.06 [Kbytes/sec] received
#连接信息
Connection Times (ms)
min mean[+/-sd] median max
Connect: 862 862 0.0 862 862
Processing: 788 788 0.0 788 788
Waiting: 788 788 0.0 788 788
Total: 1650 1650 0.0 1650 1650
#连接指标分类
1. 服务器信息部分
一般我们的Web服务器软件会是apache,那么在Server Software : 中会显示 apache : 。 但是由于Web管理员使用安全措施,该字段可能返回其它内容或什么也不返回(如示例)
Server Hostname : 测试主机名
Server Post : 测试主机的Web服务器监听端口号
2. 脚本信息部分
包含基准测试主机的Web文档的信息内容
Document Path : 包含测试请求的文档
Document Length : 包含所有HTML 、CSS、JS、图像及其响应的其它数据的字节数总和
3. 链接信息部分
连接数据包含基准测试信息最核心的反馈信息。 其中最需要关心的内容部分:
HTML transferred 整个模拟测试中传输的内容正文总大小
Requests per second 每秒支持的请求数
Time per request 满足一个请求需要花费的总时间
优化目标:减少HTML transferred 大小,提高Requests per second并降低Time per request值
4. 连接指标分类
在这一部分我们主要关注Total项目中的min : ,max : 列
min : 请求所花费的最短时间
man : 请求所花费的最长时间
参考资料
未完待续
comments powered by Disqus