ab简介
Apache Bachemark(ab)工具是最著名的基准测试工具之一,它是默认的Apache的安装的一部分,能给模拟对特定URL的任意数量的请求来对web服务器进行压力测试。ab工具提供以下信息:
- 传输的总数据大小(以字节为单位)
- web服务器在模拟流量下每秒可以支持的流量数。
- 完成一个请求所花的最长时间(以毫秒为单位)
- 完成一个请求所花的最短时间(以毫秒为单位)
使用ab工具还可以运行很多不同的负载模拟,例如:
- 对web文档的模拟请求;
- 制定时间内的请求;
- 打开Keep-Alive时的请求
最重要的是,Apache Bachemark是独立于Apache Web服务器的,从而可以在运行ab的同时使运行此工具的计算机上的web服务器处于非活动状态。
ab命令的组成结构:
1 | ab [options] [full path to web document] |
下面我们对我的博客用ab工具进行一下基准测试,熟悉一下ab的用法。
我们使用ab工具对模拟单个请求。
1 | ab -n 1 www.05do.com /index |
注意:如果你不请求该域中的任何文档,必须在域名后面加一个反斜杠。如:ab -n 1 www.05do.com/
结果如图:
字段 |
描述 |
示 例 值 |
---|---|---|
Concurrency Level |
所进行的并发请求总数 |
1,2,3,…,n, 其中n为任意数字 |
Time taken for tests |
运行所花费的总时间 |
000.000秒 |
Complete requests |
模拟的请求总数中 已完成的请求总数 |
1,2,3,…,n, 其中n为任意数字 |
Failed requests |
模拟的请求总数 中失败的请求总数 |
1,2,3, …,n, 其中n为任意数字 |
Write errors |
使用写入数据时 遇到的错误总数 |
1,2,3, …,n, 其中n为任意数字 |
Non-2×× responses |
未收到HTTP成功 响应的请求总数(200) |
1,2,3,…,n, 其中n为任意数字 |
Total transferred |
整个模拟的响应中 传输的总数据, 大小包括标头数据 |
725个字节 |
HTML transferred |
整个模拟传输的内容 正文的总大小 |
137 199个字节 |
Requests per second |
每秒支持的请求总数 |
5.68 [#/秒] (平均值) |
Time per request |
满足一个请求需要 花费的总时间 |
176.179毫秒 |
Time per request |
满足所有并发请求 中的一个请求需要 花费的总时间 |
176.179毫秒 |
Transfer rate |
每秒收到的字节总数(KB) |
766.27 [KB/秒] |
HTML transferred、Requests per second以及Time per request都是关键字段,这些字段使我们能够大致了解web服务器为一个请求返回的数据量、web服务器1秒可以处理的请求总数以及一个请求成功收到来自web服务器的响应所花的总时间。
第四部分:连接指标细目分类包含一个表,其中Connect,Processing,Wating以及Total这些字段告诉我们请求在每个状态中所需的时间。我们最感兴趣的是Total字段及其最大值,最小值列。这两列提供响应一个请求,所需花费的最长和最短时间的数据。
标记 |
描述 |
---|---|
-A <username>:<password> |
用于提供服务器身份验证信息。 用户名和密码用“:”分隔。 发送的字符串采用base64编码 |
-c <concurrency number> |
一次模拟的请求数。默认情 况下设置为1。数量不得大于n值 |
-C cookie-name=value |
可重复的标记,包含cookie信息 |
-d |
隐藏“percentage served within XX[ms] table” |
-e |
要创建的.csv文件的路径。该文件包 含运行的基准测试的结果,该结果分为 两列,即Percentage和Time in ms。建议 采用“gnuplot”文件 |
-g |
要创建的“gnuplot”或TSV文件的路径。 基准测试的输出将保存到该文件中 |
-h |
显示要用于ab的选项列表 |
-H custom-header |
采用字段值对形式发送有效标头和请求 |
-i |
执行HEAD请求,而不是默认的GET请求 |
-k |
启用Keep-Alive功能。允许通过一个 HTTP会话满足多个请求。默认情况下, 该功能处于禁用状态 |
-n requests |
要执行的请求总数 |
-p POST-file |
包含用于HTTP POST请求的数据的 文件路径。内容应该包含由&分隔的键=值对 |
-P username:password |
采用Base64编码的字符串。字符串包含 基本身份验证,以及由“:”分隔的用户名和密码 |
-q |
执行多于100个请求时隐藏进度输出 |
-s |
使用https协议,而非默认的http协议 ——不建议这样做 |
-S |
隐藏中位数和标准偏差值 |
-t timelimit |
指定了这个值以后,基准测试的时间 不会超过指定的值。默认情况下无时间限制 |
-v verbosity-level |
数值为2及以上将打印警告和信息; 为3将打印HTTP响应代码;4及以 上将打印标头信息 |
-V |
显示ab工具的版本号 |
-w |
采用HTML表格打印结果 |
-x <table-attributes> |
表示HTML属性的字符串, 使用–w时将放置在<table>标记中 |
-X proxy[:port] |
指定要使用的代理服务器。 代理端口是可选的 |
-y <tr-attributes> |
表示HTML属性的字符串, 使用–w时将放置在<tr>标记中 |
-z <td-attributes> |
表示HTML属性的字符串, 使用–w时将放置在<td>标记中 |
ab的可选参数:
其中我们常用的是如下几个:
-
n 要模拟的请求数
-
c 要模拟的并发请求数
-
t 执行模拟所需的时间
ab参数示例
1 | ab -n 100 -c 10 www.05do.com /index |
表示:同时对web服务器进行10个并发请求,直到进行到100个请求为止。
注意: -c 后面的数字 一定不能大于-n后面的数字。
1 | ab -c 10 -t 20 www.05do.com /index |
表示:模拟10个用户在20秒内同时访问网站。