Web 2.0 网站架构、优化 数据库架构
标签类目:apache

Siege,webbench,ab这几种压力测试工具的使用方法

注:压力测试要区分基准测试,应用测试, 不同的应用有不同的表现, 基准测试主要测试服务器的性能,而不是服务器在某个应用下的表现.进入正题.

Siege(英文意思是围攻)是一个压力测试和评测工具
#./configure –prefix=/usr/local/siege ;
#make
#make install

任务列表:url.txt文件
siege -c 20 -r 2 -f url.txt
参数说明:
-c 20 并发20个用户
-r 2 重复循环2次
-f url.txt任务列表:URL列表

输出样例:

** Siege 2.59
** Preparing 20 concurrent users for battle. 这次“战斗”准备了20个并发用户
The server is now under siege.. done. 服务在“围攻”测试中:
Transactions: 40 hits 完成40次处理
Availability: 100.00 % 成功率
Elapsed time: 7.67 secs 总共用时
Data transferred: 877340 bytes 共数据传输:877340字节
Response time: 1.65 secs 相应用时1.65秒:显示网络连接的速度
Transaction rate: 5.22 trans/sec 平均每秒完成5.22次处理:表示服务器后台处理的速度
Throughput: 114385.92 bytes/sec 平均每秒传送数据:114385.92字节
Concurrency: 8.59 最高并发数 8.59
Successful transactions: 40 成功处理次数
Failed transactions: 0 失败处理次数

注意:由于速度很快,可能会达不到并发速度很高就已经完成。Response time显示的是测试机器和被测试服务器之间网络链接状况。Transaction rate则表示服务器端任务处理的完成速度。

辅助工具:
增量压力测试:

为了方便增量压力测试,siege还包含了一些辅助工具:
bombardment (1)
是一个辅助工具:用于按照增量用户压力测试:
使用样例:
bombardment url.txt 5 3 4 1
初始化URL列表:url.txt
初始化为:5个用户
每次增加:3个用户
运行:4次
每个客户端之间的延迟为:1秒

输出成CSV格式:
siege2csv.pl (1)
siege2csv.pl将bombardment的输出变成CSV格式:
Time Data Transferred Response Time Transaction Rate Throughput Concurrency Code 200 (note that this is horribly broken.)
242 60.22 603064 0.02 4.02 10014.35 0.08
605 59.98 1507660 0.01 10.09 25136.05 0.12
938 59.98 2337496 0.02 15.64 38971.26 0.26
1157 60 2883244 0.04 19.28 48054.07 0.78

webbench
—————————————–
webbench最多可以模拟3万个并发连接去测试网站的负载能力
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5
make && make install

webbench -c 500 -t 30 http://127.0.0.1/test.jpg
参数说明:-c表示并发数,-t表示时间(秒)

测试结果示例:
Webbench – Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://127.0.0.1/test.jpg
500 clients, running 30 sec.
Speed=3230 pages/min, 11614212 bytes/sec.
Requests: 1615 susceed, 0 failed.
参数说明:
-c 20 并发20个用户
-r 2 重复循环2次
-f www.chedong.com.url 任务列表:URL列表

输出样例:
** Siege 2.59
** Preparing 20 concurrent users for battle. 这次“战斗”准备了20个并发用户
The server is now under siege.. done. 服务在“围攻”测试中:
Transactions: 40 hits 完成40次处理
Availability: 100.00 % 成功率
Elapsed time: 7.67 secs 总共用时
Data transferred: 877340 bytes 共数据传输:877340字节
Response time: 1.65 secs 相应用时1.65秒:显示网络连接的速度
Transaction rate: 5.22 trans/sec 平均每秒完成5.22次处理:表示服务器后台处理的速度
Throughput: 114385.92 bytes/sec 平均每秒传送数据:114385.92字节
Concurrency: 8.59 最高并发数 8.59
Successful transactions: 40 成功处理次数
Failed transactions: 0 失败处理次数

注意:由于速度很快,可能会达不到并发速度很高就已经完成。Response time显示的是测试机器和被测试服务器之间网络链接状况。Transaction rate则表示服务器端任务处理的完成速度。

辅助工具:
增量压力测试:
为了方便增量压力测试,siege还包含了一些辅助工具:
bombardment (1)
是一个辅助工具:用于按照增量用户压力测试:
使用样例:
bombardment urlfile.txt 5 3 4 1
初始化URL列表:urlfile.txt
初始化为:5个用户
每次增加:3个用户
运行:4次
每个客户端之间的延迟为:1秒

输出成CSV格式:
siege2csv.pl (1)
siege2csv.pl将bombardment的输出变成CSV格式:
Time Data Transferred Response Time Transaction Rate Throughput Concurrency Code 200 (note that this is horribly broken.)
242 60.22 603064 0.02 4.02 10014.35 0.08
605 59.98 1507660 0.01 10.09 25136.05 0.12
938 59.98 2337496 0.02 15.64 38971.26 0.26
1157 60 2883244 0.04 19.28 48054.07 0.78

APACHE 的 AB
—————————————–
./ab -c 300 -n 1000 http://www.zaojiao.com/test.html

ab -n 全部请求数 -c 并发数 测试url
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 #传输速率

以下结果时间每次有所偏差,均取相对平均值。
test.html
1 1000 1.296 771/s
5 1000 0.4826 2072/s
10 1000 5.142 194/s

700 700 3.36 208/s
700 2100 6514 321/s
2000 2000 3.2 608
6000 6000 6.2 983

这三种工具从机理上是一样的,根据测试的要求选择合适的工具.

使用Apache+tomcat比单独使用tomcat能带来什么样的好处及坏处

单独使用的优点:配置方便、安全漏洞少(比如利用大小写的JSP下载)

那什么情况下需要使用apache+tomcat呢?来分析一下
1、负载均衡
如果你需要负载均衡的话,apache+tomcat+modjk是一个选择,利用它,你可以把应用服务器拆分成多个服务器,比如:可以拆分成:
(1)、管理端应用服务器
(2)、客户端应用服务器
(3)、报表、打印服务器放在一台机器上
(4)、批量操作服务器放在一个地方(比如大量的对账调账)
(5)、甚至可以给每批客户一台服务器,比如不同的省
2、各种各样的web server功能
大家都知道,apache有无数的mod,这些mod提供着各种各样丰富的web功能,如果你需要这些功能,apache就是必不可少的选择
比如:
(1)虚拟主机
同一个ip要使用多个不同的域名,那么apache来帮你完成这个问题吧
(2)urlrewrite
3、快速相应性能
在快速响应上的优势apache可以说远远超过其它服务器,一台apache只做转发的话可以拖着无数的tomcat服务器来跑
4、对二进制文件的处理上
对于.jpg  .css .js .html等的处理上,apache的性能远超过tomcat,可以把这些都配置给apache
5、对于请求的排队上
6、对于资源的占用上。
这里举个例子,比如应用服务开发用了open-session-in-view,那么在如果只用tomcat,在处理完成后要给客户端发送response的内容,如果网络很慢,这样应用服务器的session就会一直不关闭,一直等着,容易造成数据库connection过多,造成问题。相应的还有很多类似的资源占用问题
如果用apache+tomcat,因为apache和tomcat在同一个局域网,之间很快,所有的requese和response都是apache和tomcat交互,这部门不会出现上边的问题,而和最终客户都是apache和最终用户,apache不会占用这些资源,不会造成这类问题。

以上是一些常见的原因。

返回顶部