httperf命令常用参数

上一篇 / 下一篇  2015-11-24 16:48:43 / 个人分类:性能测试

ubuntu安装:apt-get install httperf

最近在做WEB压力测试,重新捡起了已经N年木有使用过的httperf。发现这家伙竟然还在更新,而且迁移到了Google Code (http://code.google.com/p/httperf/)。新版的httperf相比之前有些变化,对请求的发起控制做的更加细化了。学习了一番,难懂的就是wsess这个参数了。

首先我们看一下–wsess这个参数的格式:
–wsess=N1,N2,X

N1:代表本次测试发起的总会话数(session)
N2:
代表每个会话中发起请求的次数;
X:
代表每次冲击” (burst)间隔的时间(以为单位);

接下来,需要理解一下会话(session)到底是个什么东西?

htterf中,session是由一系列的冲击冲击可以理解为对WEB SERVER发起的一次测试访问。当然,我对这个burst翻译的比较晦涩,系统你能明白。)组成,冲击之间相隔的时间由X控制。这就是会话。

而一次冲击(测试访问)中又包含多个请求(可以理解为并发)。包含请求的个数可以使用–burst-length=N指定。

那么httperf是如何处理一次冲击中并发请求的呢?

首先,一个单独的请求被发送至WEB SERVER,一旦这个请求被完整的接收,那么剩下的所有请求(N – 1),将会同时发送至WEB SERVER。所以,从这个机制来看,httperf发起的一次访问总,真实的并发数应是N – 1  个。

OK,了解了上面这些,我们再来看一个例子:

./httperf \

--hog \

--server=www.inanu.net \

--uri=/mysql.php \

--wsess=100,1000,3 \

--burst-length=10 \

--rate=5 \

--timeout=5

这是一个在实际情况中用到的压力测试命令以及参数。我们逐个解释,其中也包含了上面说到的–wsess–burst-length

–hog:这个选项会让httperf使用尽可能多的TCP端口。如果不使用这个选项,则httperf默认值会使用从10245000这些端口发起请求。当然,在重度压力测试中,这么点端口显然是不够用的。

–server:这个不用说了,指定WEB SERVER的主机名称。

–uri:指定需要访问的压力测试脚本(资源),不要忘记前面的”/”

–wsess=100,1000,3 –burst-length=10:我们将这两个参数结合起来解释,结合上面讲到的,本次测试一共有100个会话(session),每个会话包含1000次请求,而–burst-length指定了每次测试访问会包含10个请求。那么,每个会话真正执行的测试访问次数不难算出,就是100次啦!有点绕吗?其实就是N2/burst-length。如果还是不明白,再看一次开头的那些解释说明吧。最后的“3″,指定每次测试访问发起的间隔是3秒。

–rate=5:意思就是会话的发起率。在本例中,就是每个会话建立的时间相隔5秒。

–timeout=5:如果一个请求在5秒内没有能得到正确的响应和返回,则判定这次请求失败。

最后,当我们执行上面的测试指令时,会发现httperf还自动加上了一个–client=0/1。这是什么意思呢?

其实这并不是和TCP连接有任何关系,这只是测试发起端的标识符罢了。在通常情况下,我们会使用很多台请求发起机对一个WEB SERVER进行测试。这个–client=I/N就是标识这个请求是由哪台测试发起端发出的。I是本台机器的编号,N代表这次测试一共有多少台测试发起机。

嗯,先写到这里吧。更多的内容可以去仔细阅读httperfMannual。说实话,httperf真的比Apache ab要好用很多!

作者:Nanu (http://www.inanu.net/)

 

另外一个参考例子:

 使用方法:

httperf --client=0/1 --server=[YOUR_DOMAIN] --port=443 --uri=/a.php --rate=100 --send-buffer=4096 --recv-buffer=16384 --ssl --num-conns=50 --num-calls=1000

例样含义:

  • --client=I/N指定当前客户端I,是N个客户端中的第几个。用于多个客户端发请求,希望确保每个客户端发的请求不是完全一致。一般不用指定
  • --server请求的server
  • --port请求的端口号,默认为80,如果指定了--ssl443
  • --uri请求路径
  • --rate指定一个固定速率来创建连接和会话
  • --num-conns创建连接数
  • --num-call每个连接发送多少请求
  • --send-buffer指定发送http请求的最大buffer,默认为4K,一般不用指定
  • --recv-buffer指定接受http请求的最大buffer,默认为16K,一般不用指定

3.结果分析:

  • Maximum connect burst length: 6
  • 最大并发连接数:6
  • Total: connections 50 requests 5050 replies 5000 test-duration 9.193 s
  • 一共50个连接,5050个请求,应答了5000个,测试耗时:9.193
  • Connection rate: 5.4 conn/s (183.9 ms/conn, <=50 concurrent connections)
  • 连接速率:

TAG:

 

评分:0

我来说两句

日历

« 2024-05-04  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 11120
  • 日志数: 10
  • 建立时间: 2015-11-24
  • 更新时间: 2015-12-25

RSS订阅

Open Toolbar