使用apache的ab工具做压力测试

2012年12月14日 技术分享 评论 1 条 阅读 6,909 views 次

一、 Ab 命令简介

你是否在苦恼于想对一些系统做压力测试,但是又没有找到简单方便的工具?其实在 apache 里 面就自带了一些这样的测试工具—ab(apache benchmark)。此工具在安装在apache 的 bin 目录下面。Ab 可以直接在 web 服务器本地发起测试,也可以在远程发起测试。

Ab 测试的本质是模http请求,所以可以将它看做是对于Web 服务器软件的黑盒性能测试, 它获得的一切数据和计算结果,都可以途过HTTP来解释。

二、 启动测试

如现在我们要对 www.qq.com  做一次测试,使用方法如下。在 windows 下面打开命令行,进入到 apache 的 bin 目录下面,或者将 apache 的 bin 目录添加到系统的环境发量的 path 下面。

输入 ab –n 100 –c 10 http://www.qq.com/

然后按回车,可以出现如下的内容:

ab-test-result

此命令解释:

  • -n 100

表示总请求数为 100

  • -c 10

表示并发用户数为 10

表示请求的目标 URL,也就是要测试的目标地址。

三、 结果详解

  • Server Software

表示被测试的 Web 服务器软件名称,返回的 squid/3.0,它来自于http响应数据的头信息,所

以如果这里是我们自己编写的 Web 服务器软件或者修改开源的 web 服务器软件的源代码,返里的 信息可以为我们自定义的头信息。

  •  Server hostname

表示请求的 URL 中的主机部分名称,它来自于http请求数据的头信息。

  • Server port

表示被测试的 web 服务器软件的监听端口。

  • Document Path

表示请求的 URL 中的根的绝对路径,它同样来自于HTTP请求数据的头信息,通过它的后缀名, 我们一般可以了解该请求的类型。

  • Document Length

表示 HTTP 响应数据的正文的数据长度。

  • Concurrency Level

表示并发用户数,返里数据就是我们前面设置的-c 的数值。

  • Time taken for tests

表示所有返些请求被处理完成所花费的总时间。

  • Complete requests

表示为请求数,这是我们前面设置的-n 的参数值。

  • Failed requests

表示失败的请求数,这里的失败是指请求在连接服务器、发送数据、接收数据等环境节发生异常, 以及无响应超时的情况。对于超时时间的设置可以使用 ab 的-t 参数,

如果接收到的 http 响应数据的头信息中含有 2xx 以外的状态码,则会在测试结果显示另一个名 为“Non-2xx response”的统计项,用户统计这部分请求数,这些请求并不算是失败的请求。

  • Total transferred

表示所有请求的响应数据长度总和,包括每个 http 响应数据的头信息和正文数据的长度。注意 这里不包括 http 请求数据的长度,所以 Total  transferred 代表了仅 Web 服务器流向用户 PC 的应用层数据总长度。通过使用 ab 的-v 参数即可查看详细的 http 头信息。

  • HTML transferred

表示所有请求的响应数据中正文数据的总和,也就是减去了 Total transferred中 http 响应数据中头信息的长度。

  • Request per second

这里的值就是吞吐率,它等于

Complete request  /Time  taken for testsTime per request

这里的值是用户平均请求等待时间,它等于

Time taken for tests /(complete requests/Concurrency level)

  • Time per request(across all concurrent  requests)

这里的值是服务器的平均请求处理时间,它等于 Time taken for tests/complete requests 返回值正是吞吐率的倒数。同时,它也等于 Time per request/Concurrency Level

  • Transfer rate

表示这些请求在单位时间内从服务器获取数据的长度,它等于 Total transferred /Time  taken for tests

这个统计项可以很好的说明服务器在处理能力达到极限时,其出口带宽的需求量。

  • Percentage of the requests served within  a certain time(ms)

这部分数据用于描述每个请求处理时间的分布情总,比如在上面的测试结果中,50%的请求处理 时间在 5200ms 内,99%的请求在 18022ms 内。注意这里的处理时间,是指前面的 Time per request, 即对于单个用户而言,平均每个请求处理的时间。

用户头像

1 条留言  访客:1 条  博主:0 条

  1. avatar 飞龙在天

    学习啦~

给我留言

您必须 登录 才能发表留言!

Copyright © IT人生录 保留所有权利.   主题设计 知更鸟 滇ICP备16001547号

用户登录

分享到: