前言
这里列举了常见的压力测试工具
1. webbench
2. http_load
3. siege 支持https
4. db
5. tsung 推荐
一、Webbench
- 这个使用就最为简单的,比Apache自带的ab压力测试要好使一点
- 下载
webbench-1.5.tar.gz
wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz
安装
tar zxf webbench-1.5.tar.gz && cd webbench-1.5
make && make install
常用参数
-t 测试时间
-c 并发连接数举个粟子
模拟1000并发数,测试时间300秒。
webbench -c 1000 -t 300 http://www.imdst.com
二、Http_load
- 单一进程运行,以并行复用的方式运行,用以测试web服务器的吞吐量与负载。一般简单的压力测试可以使用它
下载
http_load-14aug2014.tar.gz
wget http://www.acme.com/software/http_load/http_load-14aug2014.tar.gz
安装
tar zxvf http_load-12mar2006.tar.gz && cd http_load-12mar2006
make && make install
常用参数
-p 并发访问进程数
-f 总的访问次数
-r 每秒的访问频率
-s 总的访问时间举个粟子
http_load -p 100 -f 1000 url.txt
总访问1000次,并发100
http_load -r 100 -s 300 url.txt
持续300秒,每秒100次访问
三、Siege
- 多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行
下载
siege-3.1.0.tar.gz
wget http://download.joedog.org/siege/siege-3.1.0.tar.gz
安装
tar zxvf siege-3.1.0.tar.gz && cd siege-3.1.0/
./configure
make && make install
siege.config
常用参数
-i 多个url,随机访问
-c 并发用户数
-r 重复次数
-t 测试时间
-l 输出测试日志举个粟子
siege -c 200 -t 10 http://www.imdst.com
并发数200,持续时间10秒。
siege -c 50 -r 100 http://www.imdst.com
50个用户(每次并发量,注意不是每秒并发量) 重复100次 共产生 50 * 100 = 5000个请求
siege -c 50 -r 100 http://www.imdst.com/?name=test
50个用户 重复100次 发送GET参数
siege -c 50 -r 100 "http://www.imdst.com POST name=test"
50个用户 重复100次 发送POST参数 (注意引号)- 结果说明
Transactions: 30000 hits //完成30000次处理
Availability: 100.00 % //100.00 % 成功率
Elapsed time: 68.59 secs //总共使用时间
Data transferred: 817.76 MB //共数据传输 817.76 MB
Response time: 0.04 secs //响应时间,显示网络连接的速度
Transaction rate: 437.38 trans/sec //平均每秒完成 437.38 次处理
Throughput: 11.92 MB/sec //平均每秒传送数据
Concurrency: 17.53 //实际最高并发连接数
Successful transactions: 30000 //成功处理次数
Failed transactions: 0 //失败处理次数
Longest transaction: 3.12 //每次传输所花最长时间
Shortest transaction: 0.00 //每次传输所花最短时间
四、ab
- ApacheBench安装apache后就可以使用,不过测试效果一般
安装
centos:yum install apr-util
debian:apt-get install apache2-utils
常用参数
-n 请求总次数
-c 并发请求数,不能大于-n举个粟子
ab -c 100 -n 1000 http://www.imdst.com
并行发送100个请求,执行1000次。
五、Tsung
- 开源的多协议分布式负载测试工具,基于erlang,使用perl+gnuplot生成图表,它能用来压力测试HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP 和 Jabber/XMPP的服务器。它可以分布在多个客户机,并能够模拟成千上万的虚拟用户数并发。
- 安装
yum -y install erlang perl perl-RRD-Simple.noarch perl-Log-Log4perl-RRDs.noarch gnuplot perl-Template-Toolkit
wget http://tsung.erlang-projects.org/dist/tsung-1.5.1.tar.gz
tar zxvf tsung-1.5.1.tar.gz
cd tsung-1.5.1
./configure
make && make install
- 配置
在/usr/share/doc/tsung/examples/目录有多个例子供参考,我们这里主要是使用http_simple.xml进行修改。 Tsung默认配置文件路径为:~/.tsung/
mkdir ~/.tsung/
cp /usr/share/doc/tsung/examples/http_simple.xml ~/.tsung/tsung.xml
- 配置文件参考:
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
<tsung loglevel="debug" version="1.0">
<!-- Client side setup -->
<clients>
<client host="localhost" use_controller_vm="true"/>
</clients>
<!-- Server side setup -->
<servers>
<server host="xxx.imdst.com" port="8081" type="tcp"></server>
</servers>
<load>
<!-- several arrival phases can be set: for each phase, you can set
the mean inter-arrival time between new clients and the phase
duration -->
<arrivalphase phase="1" duration="10" unit="minute">
<users interarrival="2" unit="second"></users>
</arrivalphase>
</load>
<sessions>
<session name="http-example" probability="100" type="ts_http">
<for from="1" to="20000" var="i">
<!-- <request> <http url="/" method="GET" version="1.1"></http> </request>
<thinktime value="20" random="true"></thinktime>
-->
<request> <http url="/" method="POST" version="1.1" contents_from_file="/tmp/myfile"></http> </request>
</for>
</session>
</sessions>
</tsung>
- 配置文件说明:
clients 客户端,如果是多台客户端同时压测的话,可以配置多个client的IP地址
servers 被压测服务器配置,主要是填写IP和端口
load 配置压测信息,如:10分钟之内,不限制并发用户以每2秒的速度并发请求。
sessions 被压测服务器的具体配置信息,这个可以指定配置的URL,由于我这里有token等相关的变量,因此需要采用文件的形式,否则会提示配置文件错误。
更多配置文件参考可以看:官方用户手册
- 举个粟子
- 压测
tsung start
- 如果你没有在配置文件中写for循环,例如:
- 就需要使用ctrl+c 来中止压测。
- 生成图表
cd /root/.tsung/log/20150717-1020
/usr/lib/tsung/bin/tsung_stats.pl
- 然后下载成生的图表graph.html和reports.html,用浏览器打开
- 压测