`
hillside
  • 浏览: 127443 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java web开发总结(四):apache自带压力测试小工具ab(apache benchmark)

阅读更多
web程序,如果不做压力测试上线,往往会遇到多线程抢锁或者同时修改内存对象和高并发响应缓慢问题。
所以最好是在上线前做一些压力测试,一个简单的apache自动的压力测试工具还是非常好用的。
各种配置下的web server的响应能力,可以通过ab来进行压力测试,进而得出一个适合自己系统的配置。毕竟不同的应用场景,配置需求是会不一样的,不太可能通用。

关于ab的使用,网络上有很多介绍,以下内容摘自网络:
apache自带的测试工具AB(apache benchmark).在apache的bin目录下。
格式:
ab [ -A auth-username:password ] [ -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:password ] [ -q ] [ -s ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [http://]hostname[:port]/path

参数:
-A auth-username:password
向服务器提供基本认证信息。用户名和密码之间由一个":"隔开,并将被以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, Excel中。其中的第一行为标题。
-h
显示使用方法的帮助信息。
-H custom-header
对请求附加额外的头信息。此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值(如:"Accept-Encoding: zip/zop;8bit")。
-i
执行HEAD请求,而不是GET 。
-k
启用KeepAlive功能,即在一个HTTP会话中执行多个请求。默认不启用KeepAlive功能。
-n requests
在测试会话中所执行的请求个数。默认仅执行一个请求,此时其结果不具有意义。
-p POST-file
包含了POST数据的文件。
-P proxy-auth-username:password
对一个中转代理提供基本认证信息。用户名和密码由一个":"隔开,并将被以base64编码形式发送。无论服务器是否需要(即是否发送了407代理认证需求代码),此字符串都会被发送。
-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>属性的字符串。


参数很多,一般我们用 -c 和 -n 参数就可以了. 例如:

./ab -c 1000 -n 1000 http://127.0.0.1/index.html


这个表示同时处理1000个请求并运行1000次index.php文件。
#/usr/local/xiaobai/apache2054/bin/ab -c 1000 -n 1000 http://127.0.0.1/index.html.zh-cn.gb2312
This is ApacheBench, Version 2.0.41-dev <$Revision: 1.121.2.12 $> apache-2.0
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Finished 1000 requests


Server Software: Apache/2.0.54
//平台apache 版本2.0.54
Server Hostname: 127.0.0.1
//服务器主机名
Server Port: 80
//服务器端口

Document Path: /index.html.zh-cn.gb2312
//测试的页面文档
Document Length: 1018 bytes
//文档大小

Concurrency Level: 1000
//并发数
Time taken for tests: 8.188731 seconds
//整个测试持续的时间
Complete requests: 1000
//完成的请求数量
Failed requests: 0
//失败的请求数量
Write errors: 0

Total transferred: 1361581 bytes
//整个场景中的网络传输量
HTML transferred: 1055666 bytes
//整个场景中的HTML内容传输量
Requests per second: 122.12 [#/sec] (mean)
//大家最关心的指标之一,相当于 LR 中的 每秒事务数 ,后面括号中的 mean 表示这是一个平均值
Time per request: 8188.731 [ms] (mean)
//大家最关心的指标之二,相当于 LR 中的 平均事务响应时间 ,后面括号中的 mean 表示这是一个平均值
Time per request: 8.189 [ms] (mean, across all concurrent requests)
//每个请求实际运行时间的平均值
Transfer rate: 162.30 [Kbytes/sec] received
//平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

Connection Times (ms)
min mean[+/-sd] median max
Connect: 4 646 1078.7 89 3291
Processing: 165 992 493.1 938 4712
Waiting: 118 934 480.6 882 4554
Total: 813 1638 1338.9 1093 7785
//网络上消耗的时间的分解,各项数据的具体算法还不是很清楚

Percentage of the requests served within a certain time (ms)
50% 1093
66% 1247
75% 1373
80% 1493
90% 4061
95% 4398
98% 5608
99% 7368
100% 7785 (longest request)
//整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于1093 毫秒,60% 的用户响应时间小于1247 毫秒,最大的响应时间小于7785 毫秒

由于对于并发请求,cpu实际上并不是同时处理的,而是按照每个请求获得的时间片逐个轮转处理的,所以基本上第一个Time per request时间约等于第二个Time per request时间乘以并发请求数



以上四章,本着工欲善其事,必先利其器的想法,简单总结一下web server和压力测试工具,为web开发,准备好前端环境。

参考文档:
apache官方文档:http://httpd.apache.org/docs/2.2/programs/ab.html
中文文档:http://lamp.linux.gov.cn/Apache/ApacheMenu/programs/ab.html
1
0
分享到:
评论

相关推荐

    Apache Benchmark(简称ab压力测试工具) 是Apache安装包中自带的压力测试工具 ,简单易用

    -n 即requests,用于指定压力测试总共的执行次数。 -c 即concurrency,用于指定的并发数。 -t 即timelimit,等待响应的最大时间(单位:秒)。 -b 即windowsize,TCP发送/接收的缓冲大小(单位:字节)。 -p 即...

    apache benchmark ab.exe

    apache benchmark 独立文件 ab.exe 可以直接使用 Version 2.3。一般用户压力测试用。参数如下 .\ab.exe --help Options are: -n requests Number of requests to perform -c concurrency Number of multiple ...

    Apache Benchmark-2.2.19-64

    ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等

    网页并发测试小工具ApacheBench

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

    ApacheBench压力并发测试

    ApacheBench测试,ab.exe纯文件,省去配置apache麻烦。

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

    服务器负载太大而影响程序效率是很常见的,Apache服务器自带有一个叫ab(ApacheBench)的工具,在bin目录下。ab专门用于HTTP Server的benchmark testing,可以同时模拟多个并发请求,使用这个轻巧的工具我们可以对...

    一款不错的网站压力测试工具webbench

    webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便。 1、适用系统:Linux 2、编译安装: tar zxvf webbench-1.5.tar.gz cd webbench-1.5 make...

    性能测试工具ab

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

    SuperBenchmarker:类固醇上的Apache Benchmark(ab.exe)

    受Apache Benchmark的启发,它打算成为steriods上的Apache Benchmark(ab.exe)。 它会在测试结束时在终端窗口中显示最终结果,但也会在Web界面中不断报告。开始上手你需要什么Superbenchmarker(sb或sbcore)可在...

    Apache benchmark V2.3

    shit + 右键, 打开命令行 命令:ab -n1000 -c100 http://localhost:12001/

    Mac/Linux 安装ab(Apache Benchmark)

    Mac安装Apache Benchmark() 1.下载依赖 wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz wget ...

    ab-parser:该实用程序将Apache Benchmark报告中的值解析为CSV文件

    Apache Benchmark解析器该实用程序将Apache ...用法使用以下格式运行它: java -jar ab-parser.jar [source] [target csv]源可以是包含Apache Benchmark报告文件的目录,也可以是单个Apache Benchmark报告文件。

    redis 在java中的使用示例工程

    redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具). 启动Redis服务(conf文件指定配置文件,若不指定则默认): D:\redis-2.0.2&gt;redis-server.exe ...

    redis_for_windows_32_64bit

    redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具). 启动测试: redis-server.exe redis.conf 连接测试: redis-cli.exe -h localhost -p 6379

    sysbench对mysql压力测试的详细教程

    在对网站整体性能进行benchmark时,可以使用多种工具,比如大名鼎鼎的ab(Apache bench),http_load等工具。这里我们不关注他们的使用,如果你想了解,可以自行在网上找到答案。 重点来说MySQL的基准测试如何进行,也...

    性能测试工具freebencher.zip

    之所以灵活,是因为你可以用任意 Java 代码来写性能测试用例,你可以测试任何可以用 Java 代码来表示的行为,你可以用任何你自己喜欢的方式在测试时获取你的测试数据。 生成的结果类似于 apache ab 的结果, 使用...

    socket.io-room-benchmark:使用nodejs,socketio(room)和apache bench。 服务器响应ab commnad的请求而发射到随机房间

    简单的nodejs,socket.io基准测试。 (从分叉) 安装: 克隆此存储库 在创建的目录上, npm i 设置ulimit ulimit -u &lt;desired&gt; , ulimit -n &lt;desired&gt; 设置ulimit可以增加打开的套接字的最大数量。 跑步: 启动...

    HttpServer:一个有趣的HTTP服务器实现

    我使用AB(Apache Benchmark)运行了一些基准测试。 结果如下: Jessies-MBP:~ jessie$ ab -n 16000 -c 10 -s 10 http://localhost:8888/README.md This is ApacheBench, Version 2.3 &lt;$Revision: 1663405 $&gt; ...

    whook-perf:适用于Whook的天真Benchmak与其他框架

    要运行Benchmak,请在您的系统中安装ab (大多数软件包系统的Ap​​ache二进制文件通常都提供Apache Benchmark)。 在Debian上: apt-get install apache 还安装依赖项: npm install 然后,运行基准测试: $ ./...

Global site tag (gtag.js) - Google Analytics