最近需要做些测试相关的工作,开始接触压力测试;记录下来,以便以后复习,也希望能与大家分享;有错之处,请各位多多包涵;
压测工具Tsung介绍
Tsung是一个开源、多协议、分布式的压力测试工具。它可以用来测试HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP 和Jabber/XMPP的服务器,并且支持扩展协议。只要硬件足够,它可以在客户机集群上分布运行,模拟上百万用户。国内主要有 华为 和 SNS 网站在用;
主要特性:
1. 高性能
2. 多协议支持并支持扩展协议。
3. 利用OS的IP别名技术,在单机上可以使用多个IP。
4. 服务器监控(CPU, 内存, 网络流量),支持SNMP, Munin 或 Erlang方式。
5. 测试方案使用XML配置,可用不同的session来模拟不同类型的用户。
6. 模拟真实流量,用随机概率模拟用户的思考时间和抵达率。
7. HTML及图表方式报告压测结果。
2. Tsung的安装
Tsung目前只支持Linux系统,下面介绍Tsung在CentOS下的安装。
Tsung是erlang写的,绘制图表时使用的gnuplot,需要使用perl相关库,所以也要安装perl, gnuplot。
2.1 安装前提
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel
yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
yum -y install perl
yum -y install gnuplot
erlang的下载地址http://www.erlang.org/download.html,最新版为 R16B02。
tar -zxvf otp_src_R16B02.tar.gz
cd otp_src_R16B02
./configure --prefix=/usr/local/erlang
make && make install
Tsung的下载地址http://tsung.erlang-projects.org/dist/,最新版为1.5.0。也可以到github拉最新的下来,地址https://github.com/processone/tsung。
由于我们的业务很多要发protocolbuffer的二进制数据,而这些数据需要写在文件中才能读取,
为了在一个文件中写多个pb数据,建议使用修改过的tsung版本,版本见附件tsung-fix_raw.zip。
修改内容: 文件读取是按行读取的,tsung默认行分隔符为“\n”(10),而pb中有很多"\n",这样一个pb就会被分割成多个数据段,且每个数据段都不可用。 该修改版本将文件读取的行分隔符改为"\r\n"(13,10),这样一个pb就能被完整读取;且如果多个pb间使用“\r\n”(13,10)进行分割,多个pb都能正常读取。 注意:若想在一个文件中写多个pb文件,需要在多个pb中间写入"\r\n"(13,10)。 代码在src\tsung_controller\ts_file_server.erl的第223行,行分隔符也可以自行修改为其他内容,在源代码中修改完成以后再 make && make install 安装 |
---|
tar zxvf tsung-1.5.0.tar.gz
cd tsung-1.5.0
./configure --prefix=/usr/local/tsung --with-erlang=/usr/local/erlang
make && make install
Tsung生成统计报告时需要用到该模板。Template-Toolkit下载页面:http://www.template-toolkit.org/download/index.html。
tar -zxvf Template-Toolkit-2.25.tar.gz
cd Template-Toolkit-2.25
perl Makefile.PL
make
make test
make install
至此Tsung的软件就安装好了,如果想直接使用erl, tsung, tsung_stats.pl等命令,可以将其加入到系统Path中。
配置文件的结构如下
2. 客户机及服务器设置(Clients and Server)
5. 负载情况(Defining the load progression)