`
cppmule
  • 浏览: 447121 次
  • 性别: 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详解** 在IT行业中,性能测试是评估软件系统在高负载或大量并发用户情况下的稳定性、响应时间和资源消耗的关键环节。"AB"是一款简单而强大的性能测试工具,专为Web应用程序设计,它可以帮助开发者...

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

    **ab.exe:Apache服务器性能测试工具** 在IT领域,性能检测是评估系统、网络或应用程序运行效率的关键步骤。"ab.exe"(ApacheBench)就是这样一款专为性能检测设计的工具,它作为Apache HTTP服务器的一部分,被广泛...

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

    Postman适合API的性能测试,ab适合简单的Web服务器性能基准测试,而JMeter则适合进行复杂的、全面的性能压力测试。这三者结合使用,可以为你的性能测试工作提供全方位的支持,确保你的系统在高负载下依然能够稳定...

    压力测试工具ab

    "ab"(ApacheBench)就是这样一个简单而强大的命令行工具,专门用于对Web服务器进行性能测试。 **一、ab工具介绍** Apache ab(Apache Benchmark)是Apache HTTP服务器项目的一部分,它能够模拟多个并发用户向...

    window安装ab压力测试并使用.zip

    在IT领域,性能测试是评估系统承载能力的关键环节,而Apache Bench(简称ab)是一款广泛使用的命令行工具,用于进行HTTP服务器的压力测试。在Windows操作系统中安装和使用ab,可以帮助我们了解服务器在高并发情况下...

    性能测试入门 性能测试入门

    本入门指南将带你走进性能测试的世界,了解其基本概念、重要性以及如何进行实际操作。 一、性能测试定义与目的 性能测试是一种评估软件系统在特定工作负载下的性能表现的测试类型。它关注的是系统处理能力、响应...

    使用Apache ab进行http性能测试

    使用 AB 进行性能测试时,基本的命令格式是 `ab -n &lt;请求次数&gt; -c &lt;并发数量&gt; &lt;URL&gt;`。例如,`ab -n 1000 -c 10 http://localhost:3000/` 会模拟10个并发用户向 `http://localhost:3000/` 发送1000次请求。其他可选...

    Apache 压力测试工具ab 专注接口测试 并发测试

    只需要将URL指向接口的路径,ab就能对API进行性能测试。这对于微服务架构下的服务性能监控至关重要。 7. **注意事项** - ab测试结果受到网络环境、服务器配置、测试时的系统负载等因素影响,需结合实际情况分析。 ...

    压力测试工具-ab

    在IT行业中,性能测试是评估系统稳定性和承载能力的重要环节,而`ab`(ApacheBench)就是一个广泛使用的轻量级压力测试工具。它由Apache HTTP服务器项目开发,主要用于测试Web服务器的性能。下面我们将深入探讨`ab`...

    BOMS.zip_apache-ab 测试_scubom

    在“BOMS.zip_apache-ab 测试_scubom”这个压缩包中,我们可以看到与使用ab进行性能测试相关的资料,特别是针对SCUBOM(可能是某个特定系统或服务)的测试场景。 **1. Apache Bench基础** ab工具提供了简单的...

    性能测试基础培训

    性能测试的目标主要包括获取系统的容量和性能指标、验证系统性能是否满足需求、发现系统的性能问题和瓶颈、进行技术方案评估选型、进行竞争对手分析等。性能测试的类型主要包括负载测试(Load)、压力测试(Stress)...

    性能测试工具ab

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

    Apache ab压力测试工具

    在进行服务器性能评估时,可能还需要结合其他工具,如JMeter、LoadRunner等,以及进行实际用户模拟、数据库性能测试等全面评估。 此外,对服务器进行压力测试时应谨慎操作,避免因过高负载导致服务器崩溃或影响到...

    ab 压力测试工具

    "ab压力测试工具"是Apache HTTP服务器项目的一部分,它是一个简单但功能强大的命令行工具,用于对Web服务器进行性能测试和负载测试。这个工具能够模拟多个并发用户向服务器发送HTTP请求,帮助管理员评估服务器在高...

    AB测试工具

    【AB测试工具】是一种在Windows环境下进行性能测试的实用程序,尤其适用于评估Web服务器的负载能力和响应时间。这个工具在命令行环境中运行,通过简单的命令行参数设置,可以模拟多个并发用户对目标网站发起请求,...

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

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

    用于做ab测试的ab代码

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

    性能测试ab(ApacheBench)的应用

    **性能测试ab(ApacheBench)的应用** ApacheBench,简称ab,是Apache HTTP服务器自带的一款简单而强大的性能测试工具。它可以帮助我们评估Web服务器的性能,通过模拟多个并发用户请求来测试服务器的响应时间、吞吐量...

Global site tag (gtag.js) - Google Analytics