• 每天进步一点点!

文章分类

推荐网站

常用手册

Apache Benchmark(ab)的简单实用【原创】

<<返回

2013-05-10 10:50:26

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秒内同时访问网站。

文章评论

  • 暂无评论

发表评论

昵称:

内容:

发表评论