一 、Siegi
Siege(英文意思是围攻)是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
最早使用的压力测试工具是apache的ab(apache benchmark) ,apache ab做重复压力测试不错,但是每次只能测试一个链接,如何测试一组链接(比如从日志中导出的1个小时的日志,做真实压力测试),后来找到了这个:
Siege 是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
下载/安装
Siege时一个开放源代码项目:http://www.joedog.org
下载:
wget ftp://ftp.joedog.org/pub/siege/siege-latest.tar.gz
安装:
; make
#make install
siege包含了一组压力测试工具:
SIEGE (1) Siege是一个HTTP压力测试和评测工具.
使用样例:
任务列表:www.test.com.url文件
http://www.test.com/info.php
http://www.test.com/logo.png
….
siege -c 200 -r 2 -f www.test.com.url
参数说明:
-c 200 并发200个用户
-r 2 重复循环2次
-f www.test.com.url 任务列表:URL列表
”-C,或–config”
在屏幕上打印显示出当前的配置,配置是包括在他的配置文件$HOME/.siegerc中,可以编辑里面的参数,这样每次siege 都会按照它运行.
”-v” 运行时能看到详细的运行信息
”-c n,或–concurrent=n” 模拟有n个用户在同时访问,n不要设得太大,因为越大,siege 消耗本地机器的资源越多
”-i,–internet” 随机访问urls.txt中的url列表项,以此模拟真实的访问情况(随机性),当urls.txt存在是有效
”-d n,–delay=n” hit每个url之间的延迟,在0-n之间
-r n,–reps=n 重复运行测试n次,不能与 -t同时存在
-t n,–time=n 持续运行siege ‘n’秒(如10S),分钟(10M),小时(10H)
-l 运行结束,将统计数据保存到日志文件中siege .log,一般位于/usr/local/var/siege .log中,也可在.siegerc中自定义
-R SIEGERC,–rc=SIEGERC 指定用特定的siege 配置文件来运行,默认的为$HOME/.siegerc
-f FILE, –file=FILE 指定用特定的urls文件运行siege ,默认为urls.txt,位于siege 安装目录下的etc/urls.txt
-u URL,–url=URL 测试指定的一个URL,对它进行”siege “,此选项会忽略有关urls文件的设定
urls.txt文件:
是很多行待测试URL的列表以换行符断开,格式为:
[protocol://]host.domain.com[:port][path/to/file]
输出样例:
ransactions: 400 hits 完成400次处理
Availability: 100.00 % 成功率
Elapsed time: 2.11 secs 总共用时
Data transferred: 0.01 MB 共数据传输:0.01MB
Response time: 0.02 secs 响应时间
Transaction rate: 189.57 trans/sec 每秒传输189.57次
Throughput: 0.00 MB/sec 数据吞吐量每秒0.00MB
Concurrency: 3.65 实际并发访问
Successful transactions: 400 成功处理次数
Failed transactions: 0 失败处理次数
Longest transaction: 0.07 每次传输所花最长时间
Shortest transaction: 0.00 每次传输所花最短时间
注意:由于速度很快,可能会达不到并发速度很高就已经完成。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
-----------------------------------------------------------------
二、httperf + autobench 压力测试
安装httperf:
wget http://httperf.googlecode.com/files/httperf-0.9.0.tar.gz
cd /opt
tar zxvf httperf-0.9.tar.gz
cd httperf-0.9
./configure –prefix=/opt/httperf
make && make install
安装autobench包:
# yum install gd gnuplot pcre pcre-devel texinfo -y
#wget http://www.xenoclast.org/autobench/downloads/autobench-2.1.2.tar.gz
# tar zxvf autobench-2.1.2.tar.gz
# cd autobench-2.1.2
# make && make install
#sed -i ‘s/postscript color/png xffffff/g’ /usr/local/bin/bench2graph (修改bench2graph脚本,否则生成的图像背景有问题)
autobench –single_host –host1=192.168.1.200 –port1=80 –uri1=/logo.png –quiet –low_rate=50 –high_rate=1500 –rate_step=50 –num_call=1 –num_conn=2000 –timeout=10 –file /tmp/result.tsv
把tsv文件用图形表示出来:
/usr/local/bin/bench2graph /tmp/result.tsv /opt/result.png
--------------------------------------------
三、Webbench
webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便。
1、适用系统:Linux
2、编译安装:
引用
wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5
make && make install
3、使用:
引用
webbench -c 500 -t 30 http://192.168.2.4/test.jpg
参数说明:-c表示并发数,-t表示时间(秒)
4、测试结果示例:
引用
Webbench – Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://192.168.2.4/test.jpg
500 clients, running 30 sec.
Speed=16310 pages/min, 79422 bytes/sec.
Requests: 8155 susceed, 0 failed
---------------------------------------------
四 apache下的ab测试
[root@mail bin]# ./ab -c 1000 -n 1000 http://kyouwar.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking kyouwar.com (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
Completed 1000 requests
Finished 1000 requests
Server Software: nginx
Server Hostname: kyouwar.com
Server Port: 80
Document Path: /
Document Length: 166 bytes
Concurrency Level: 1000
Time taken for tests: 48.042 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1000
Total transferred: 311000 bytes
HTML transferred: 166000 bytes
Requests per second: 20.82 [#/sec] (mean) 每秒可完成多少请求
Time per request: 48041.946 [ms] (mean)
Time per request: 48.042 [ms] (mean, across all concurrent requests)
Transfer rate: 6.32 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 19 32 7.1 33 45
Processing: 21159 22606 1783.8 21195 48009
Waiting: 21149 22603 1785.8 21194 48009
Total: 21201 22638 1787.5 21215 48036
Percentage of the requests served within a certain time (ms)
50% 21215
66% 24053
75% 24058
80% 24062
90% 24068
95% 24070
98% 24072
99% 24073
100% 48036 (longest request)
Siege(英文意思是围攻)是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
最早使用的压力测试工具是apache的ab(apache benchmark) ,apache ab做重复压力测试不错,但是每次只能测试一个链接,如何测试一组链接(比如从日志中导出的1个小时的日志,做真实压力测试),后来找到了这个:
Siege 是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
下载/安装
Siege时一个开放源代码项目:http://www.joedog.org
下载:
wget ftp://ftp.joedog.org/pub/siege/siege-latest.tar.gz
安装:
; make
#make install
siege包含了一组压力测试工具:
SIEGE (1) Siege是一个HTTP压力测试和评测工具.
使用样例:
任务列表:www.test.com.url文件
http://www.test.com/info.php
http://www.test.com/logo.png
….
siege -c 200 -r 2 -f www.test.com.url
参数说明:
-c 200 并发200个用户
-r 2 重复循环2次
-f www.test.com.url 任务列表:URL列表
”-C,或–config”
在屏幕上打印显示出当前的配置,配置是包括在他的配置文件$HOME/.siegerc中,可以编辑里面的参数,这样每次siege 都会按照它运行.
”-v” 运行时能看到详细的运行信息
”-c n,或–concurrent=n” 模拟有n个用户在同时访问,n不要设得太大,因为越大,siege 消耗本地机器的资源越多
”-i,–internet” 随机访问urls.txt中的url列表项,以此模拟真实的访问情况(随机性),当urls.txt存在是有效
”-d n,–delay=n” hit每个url之间的延迟,在0-n之间
-r n,–reps=n 重复运行测试n次,不能与 -t同时存在
-t n,–time=n 持续运行siege ‘n’秒(如10S),分钟(10M),小时(10H)
-l 运行结束,将统计数据保存到日志文件中siege .log,一般位于/usr/local/var/siege .log中,也可在.siegerc中自定义
-R SIEGERC,–rc=SIEGERC 指定用特定的siege 配置文件来运行,默认的为$HOME/.siegerc
-f FILE, –file=FILE 指定用特定的urls文件运行siege ,默认为urls.txt,位于siege 安装目录下的etc/urls.txt
-u URL,–url=URL 测试指定的一个URL,对它进行”siege “,此选项会忽略有关urls文件的设定
urls.txt文件:
是很多行待测试URL的列表以换行符断开,格式为:
[protocol://]host.domain.com[:port][path/to/file]
输出样例:
ransactions: 400 hits 完成400次处理
Availability: 100.00 % 成功率
Elapsed time: 2.11 secs 总共用时
Data transferred: 0.01 MB 共数据传输:0.01MB
Response time: 0.02 secs 响应时间
Transaction rate: 189.57 trans/sec 每秒传输189.57次
Throughput: 0.00 MB/sec 数据吞吐量每秒0.00MB
Concurrency: 3.65 实际并发访问
Successful transactions: 400 成功处理次数
Failed transactions: 0 失败处理次数
Longest transaction: 0.07 每次传输所花最长时间
Shortest transaction: 0.00 每次传输所花最短时间
注意:由于速度很快,可能会达不到并发速度很高就已经完成。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
-----------------------------------------------------------------
二、httperf + autobench 压力测试
安装httperf:
wget http://httperf.googlecode.com/files/httperf-0.9.0.tar.gz
cd /opt
tar zxvf httperf-0.9.tar.gz
cd httperf-0.9
./configure –prefix=/opt/httperf
make && make install
安装autobench包:
# yum install gd gnuplot pcre pcre-devel texinfo -y
#wget http://www.xenoclast.org/autobench/downloads/autobench-2.1.2.tar.gz
# tar zxvf autobench-2.1.2.tar.gz
# cd autobench-2.1.2
# make && make install
#sed -i ‘s/postscript color/png xffffff/g’ /usr/local/bin/bench2graph (修改bench2graph脚本,否则生成的图像背景有问题)
autobench –single_host –host1=192.168.1.200 –port1=80 –uri1=/logo.png –quiet –low_rate=50 –high_rate=1500 –rate_step=50 –num_call=1 –num_conn=2000 –timeout=10 –file /tmp/result.tsv
把tsv文件用图形表示出来:
/usr/local/bin/bench2graph /tmp/result.tsv /opt/result.png
三、Webbench
webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便。
1、适用系统:Linux
2、编译安装:
引用
wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5
make && make install
3、使用:
引用
webbench -c 500 -t 30 http://192.168.2.4/test.jpg
参数说明:-c表示并发数,-t表示时间(秒)
4、测试结果示例:
引用
Webbench – Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://192.168.2.4/test.jpg
500 clients, running 30 sec.
Speed=16310 pages/min, 79422 bytes/sec.
Requests: 8155 susceed, 0 failed
---------------------------------------------
四 apache下的ab测试
[root@mail bin]# ./ab -c 1000 -n 1000 http://kyouwar.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking kyouwar.com (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
Completed 1000 requests
Finished 1000 requests
Server Software: nginx
Server Hostname: kyouwar.com
Server Port: 80
Document Path: /
Document Length: 166 bytes
Concurrency Level: 1000
Time taken for tests: 48.042 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1000
Total transferred: 311000 bytes
HTML transferred: 166000 bytes
Requests per second: 20.82 [#/sec] (mean) 每秒可完成多少请求
Time per request: 48041.946 [ms] (mean)
Time per request: 48.042 [ms] (mean, across all concurrent requests)
Transfer rate: 6.32 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 19 32 7.1 33 45
Processing: 21159 22606 1783.8 21195 48009
Waiting: 21149 22603 1785.8 21194 48009
Total: 21201 22638 1787.5 21215 48036
Percentage of the requests served within a certain time (ms)
50% 21215
66% 24053
75% 24058
80% 24062
90% 24068
95% 24070
98% 24072
99% 24073
100% 48036 (longest request)
本文深入解析了压力测试工具Siege、httperf+autobench、Webbench与ab测试的使用方法及应用场景,详细介绍了这些工具的功能、安装步骤、参数设置和测试结果分析,帮助开发者评估应用在压力下的承受能力。
1845

被折叠的 条评论
为什么被折叠?



