`
cppmule
  • 浏览: 435468 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

用ab进行性能测试

    博客分类:
  • test
 
阅读更多

用ab进行性能测试



 

ab是Apache服务器自己带的性能测试工具,用它可以对指定的URL进行模拟访问,然后生成一份有关访问效率的报表,从中可以大概看出网站在高压力情况下的表现。

Windows下的ab.exe一般都在Apache安装目录的bin目录下。这里举几个我实际中用过的例子:

对http://localhost/dz7/index.php产生400次请求
ab -n 400 http://localhost/dz7/index.php
测试完成后,ab会输出测试的结果:

Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Finished 400 requests

Server Software:        Apache/2.2.11
Server Hostname:        localhost
Server Port:            80

Document Path:          /dz7/index.php
Document Length:        7015 bytes

Concurrency Level:      1
Time taken for tests:   21.623 seconds
Complete requests:      400
Failed requests:        399
   (Connect: 0, Receive: 0, Length: 399, Exceptions: 0)
Write errors:           0
Total transferred:      2968811 bytes
HTML transferred:       2805205 bytes
Requests per second:    18.50 [#/sec] (mean)
Time per request:       54.057 [ms] (mean)
Time per request:       54.057 [ms] (mean, across all concurrent requests)
Transfer rate:          134.08 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.3      0      16
Processing:    31   54  64.5     47    1265
Waiting:       16   51  64.3     47    1250
Total:         31   54  64.5     47    1265

Percentage of the requests served within a certain time (ms)
  50%     47
  66%     47
  75%     47
  80%     47
  90%     47
  95%     62
  98%    141
  99%    187
 100%   1265 (longest request)

参数-n设定请求的次数;另外,还可以用-c来设定并发访问数,例如要模拟50个并发访问,可以用
ab -n 400 -c 50 http://localhost/dz7/index.php

此外,还有一个实际的问题,就是如何用ab来模拟已登录的用户的访问。绝大部分程序的登录机制都是用Cookie+Session来实现的,浏览器在每次请求时都发送一个Cookie,里面记录了Session的SID。你可以先在利用Firefox的Firebug插件来确定Cookie里的内容是什么。
firebug_cookie
从中可以看到表示登录用户的内容是“QfI_sid=55ySsk”。ab可以用-C(大写的C)来设定每次请求用发送的Cookie。所以
ab -n 400 -c 50 -C "QfI_sid=55ySsk" http://localhost/dz7/index.php
就可以模拟已登录用户的400次访问,并发数为50的情况。

最后再透露一个绝技:
ab --help

 

 

 

 

 

 

 

 

 

 

 

 

 

详细介绍和用法: 

ApacheBench(ab)使用简介

  ApacheBench可以针对某一特定URL模拟出连续的联机请求,同时还可以仿真出同时间点个数相同的联机请求,因而利用 ApacheBench 可帮助我们在网站开发期间仿真实际上线可能的情况,利用仿真出来的数据做为调整服务器设定或程序的依据。

 

 

概要

 

ab [ -A auth-username ] [ -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 ] [ -q ] [ -s ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [http://]hostname[:port]/path

 

 

选项

 

-A auth-username:password 

对服务器提供BASIC认证信任。 用户名和密码由一个:隔开,并以base64编码形式发送。 无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。 

-c concurrency 

一次产生的请求个数。默认是一次一个。 

-C cookie-name=value 

对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。 此参数可以重复。 

-d 

不显示"percentage served within XX [ms] table"的消息(为以前的版本提供支持)。 

-e csv-file 

产生一个以逗号分隔的(CSV)文件, 其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。 由于这种格式已经“二进制化”,所以比'gnuplot'格式更有用。 

-g gnuplot-file 

把所有测试结果写入一个'gnuplot'或者TSV (以Tab分隔的)文件。 此文件可以方便地导入到Gnuplot, IDL, Mathematica, Igor甚至Excel中。 其中的第一行为标题。 

-h 

显示使用方法。 

-H custom-header 

对请求附加额外的头信息。 此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对 (如, "Accept-Encoding: zip/zop;8bit"). 

-i 

执行HEAD请求,而不是GET。 

-k 

启用HTTP KeepAlive功能,即, 在一个HTTP会话中执行多个请求。 默认时,不启用KeepAlive功能. 

-n requests 

在测试会话中所执行的请求个数。 默认时,仅执行一个请求,但通常其结果不具有代表意义。 

-p POST-file 

包含了需要POST的数据的文件. 

-P proxy-auth-username:password 

对一个中转代理提供BASIC认证信任。 用户名和密码由一个:隔开,并以base64编码形式发送。 无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。 

-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>属性的字符串. 

 

缺陷

程序中有各种静态声明的固定长度的缓冲区。 另外,对命令行参数、服务器的响应头和其他外部输入的解析也很简单,这可能会有不良后果。

 

它没有完整地实现HTTP/1.x; 仅接受某些'预想'的响应格式。 strstr(3)的频繁使用可能会带来性能问题,即, 你可能是在测试ab而不是服务器的性能。

 

 

例子:

得到结果类似于(后面#为中文翻译):

 

Server Software:        Apache/2.0.55

Server Hostname:        localhost

Server Port:            80

 

Document Path:          /1.php

Document Length:        82522 bytes  #请求文档大小

 

Concurrency Level:      50           #并发数  

Time taken for tests:   92.76140 seconds #全部请求完成耗时

Complete requests:      10000          #全部请求数

Failed requests:        1974           #失败的请求

   (Connect: 0, Length: 1974, Exceptions: 0)

Write errors:           0

Total transferred:      827019400 bytes #总传输大小

HTML transferred:       825219400 bytes 

Requests per second:    108.61 [#/sec] (mean) #每秒请求数(平均)

Time per request:       460.381 [ms] (mean) #每次并发请求时间(所有并发)

Time per request:       9.208 [ms] (mean, across all concurrent requests)                              #每一请求时间(并发平均)   

Transfer rate:          8771.39 [Kbytes/sec] received #传输速率

 

Connection Times (ms) #连接时间

              min  mean[+/-sd] median   max

Connect(#连接):        0    0   2.1      0      46

Processing(#处理):    31  458  94.7    438    1078

Waiting(#等待):       15  437  87.5    422     938

Total:         31  458  94.7    438    1078

分享到:
评论

相关推荐

    ab性能测试工具使用说明

    介绍ab性能测试工具的基本使用。。。介绍ab性能测试工具的基本使用。。。

    性能测试工具AB

    性能测试ab

    性能测试工具ab

    ab的全称是ApacheBench,是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求。 &lt;br&gt;

    ab.exe是一个性能检测工具

    ab.exe是一个性能检测工具,是apache server中的一个小组件,使用简单,方便

    完整版loadrunner性能测试巧匠训练营电子文档

    第一篇初入职场:以实际案例讲解了性能测试的核心概念,以及Vugen、Control、Analysis、JMeter、ab等性能测试工具的使用,还有接口测试和典型协议脚本的开发;第二篇新硎初试:以.NET技术为背景,讲解一个全新的项目...

    用于做ab测试的ab代码

    网站测试,ab测试,可以对网站进行压测,测试性能,反应时长

    性能测试工具(postman+ab+jmeter).rar

    性能测试往往需要开发人员在开发的时候就引起重视,在此,冰河分享性能测试工具集,包括:postman+ab+jmeter,希望对大家有所帮助

    linux下使用ab进行压力测试

    首先确定下做压力测试的工具和性能的监控工具,这个压测的工具使用的是ab、监控工具使用的是nmon。看下linux主机上的ulimit-n的数据是多少,为改动过的是1024,最好要改的大一点。这个是linux下最大线程数,如果过小...

    LoadRunner性能测试巧匠训练营

    包括性能测试的术语、指标、分类、模型,LoadRunner VuGen、LoadRunner Controller、LoadRunner Analysis、JMeter、ab等各种性能测试工具的详细使用,以及测试脚本的开发。, 第二篇 新硎初试:以实战方式讲解.NET...

    Apache自带的性能测试工具ab的使用[2]

    apacheApache自带的性能测试工具ab的使用[2]软件测试以上参数最常用的是-n在测试会话中所执行的请求个数;和-c一次同时产生的并发请求个数。2.3实例假设我们要测试一个PHP论坛系统,其中一个性能测试用例是:“同时...

    LoadRunner 性能测试

    第6 章 开源性能测试工具 Apacheab 快速入门 第7 章 最佳脚本开发实战 第8 章 .NET 项目性能测试全程实战 第9 章 Java 项目性能测试全程实战 第10 章 安全测试 第11 章 测试工程师转型实录 第12 章 测试...

    Apache AB性能测试工具使用教程

    ab专门用于HTTP Server的benchmark testing,可以同时模拟多个并发请求,使用这个轻巧的工具我们可以对服务器进行负载测试。 今天在公司也用它作一些测试,现在整理了下它的一些东西分享下。 首先我们要得到Apache...

    使用Apache ab进行http性能测试

    主要为大家详细介绍了使用Apache ab进行http性能测试,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    apache ab web网站测试工具

    测试工具 ab apache 性能测试 web开发 网站开发

    Apache ab压力测试工具

    ab是Apache超文本传输协议(HTTP)的性能测试工具。其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求。

    apache性能测试工具ab使用详解

    网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环。只有让服务器处在高压情况下,才能真正体现出软件、硬件等各种设置不当所暴露出的问题。...4、ab性能指标 5、ab实际使用 6、测试nginx性能 一、

    AB压力测试实例.pdf

    Apache附带的压⼒测试工具apache bench--简称ab,⾮常容易使⽤, 并且完全...ab可以直接在Web服务器本地发起测试请求,这对于了解服务器的处理性能至关重要,因为它不包括数据的⽹络传输时间以及⽤户PC本地的计算时间。

Global site tag (gtag.js) - Google Analytics