一、tsung介绍
常用的Windows端压力测试工具可满足低并发的服务压测需求,对TPS超过10000的服务进行压测,以上工具将会达到自身瓶颈(自身资源占用较高,模拟用户量上不去),难以满足测试需求。
而在我们诸多业务线中,经常有高并发服务的压测需求,传统工具无法满足测试需求,怎么办?
tsung就为我们解决这样的问题;
Tsung是开源的基于Erlang语言开发的多协议分布式压力测试工具,它能用来压力测试HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP 和 Jabber/XMPP的服务器。它可以单机使用,也可以分布在多个客户机,并能够模拟成千上万的虚拟用户数并发。
Tsung在运行时,可以由多个虚拟机组成,每个虚拟机下有很多用户,每个用户可以产生很多session,一个session由很多request组成,这是一个很典型的树状结构。tsung使用这个树状结构来生成压力。
Tsung的每一个虚拟用户就是一个erlang的轻量进程,这点和loadrunner有很大的区别(loadrunner多线程);erlang虚拟用户完成session后就消失;大量的虚拟用户(erlang轻量进程)建立在erlangVM上;一台测试机可以启多个erlangVM,目前按照1个cpu启动1个erlangVM。
“小型”的压力测试一般不需要很多tsung客户机,一台tsung就可以打出很大的压力, 因为tsung使用了epoll技术,在一个进程中,就可以管理上万级别的socket(注意ulimit -n的限制),相对于其它压力测试工具使用多线程,在打出相同压力的情况下,tsung对本机的资源消耗要小得多。另外,tsung的多进程可以充分使用CPU的多核,可以更充分地利用客户机的硬件资源。
二、工作原理
Tsung内部实现:Tsung主要由tsung_controller和tsung两个应用共同完成压力测试,其中tsung_controller主要负责配置文件的解析和服务监控;tsung主要负责压力的产生,并完成与服务器的通信。
Tsung运作的大概流程:
1. 启动tsung_controller应用,初始化相关进程,然后由ts_config_server进程完成配置文件的解析
2. 根据配置需要启动对服务器的监控数据的统计,日志的记录等
3. 根据配置在不同节点上的erlang虚拟机进程,启动tsung应用,然后由ts_launcher进程和ts_launcher_static进程开始产生压力,这两个进程会不断创建出ts_client进程,最终在ts_client进程中模拟用户的行为完成与服务器的通信。
一、安装
系统需要支持ssh2、gcc编译环境(gcc -v)、perl(perl -v)
1、 安装erlang
tsung基于erlang,必须先安装运行环境
下载地址:http://www.erlang.org/downloads
其他系统可以直接命令安装:
- For Homebrew on OS X: brew install erlang
- For MacPorts on OS X: port install erlang
- For Ubuntu and Debian: apt-get install erlang
- For Fedora: yum install erlang
- For FreeBSD: pkg install erlang
安装命令:
cd /usr/local/
mkdir -p erlang
wget http://www.erlang.org/download/otp_src_20.0.tar.gz
tar -zxvf otp_src_20.0.tar.gz
cd otp_src_20.0/
./configure --prefix=/usr/local/erlang
make
make install
安装完成输入/usr/local/erlang/bin/erl验证安装是否成功
如果执行./configure --prefix=/usr/local/erlang时报错:
则执行yum install -y ncurses-devel
然后再执行./configure --prefix=/usr/local/erlang
2、 安装tsung
下载地址:http://tsung.erlang-projects.org/
cd /usr/local/
mkdir -p tsung
wget http://tsung.erlang-projects.org/dist/tsung-1.6.0.tar.gz
tar -zxvf tsung-1.6.0.tar.gz
cd tsung-1.6.0/
./configure --prefix=/usr/local/tsung --with-erlang=/usr/local/erlang
make
make install
安装完成运行:/usr/local/tsung/bin/tsung –h 校验是否安装成功
3、 安装gnuplot 和 perl5
生产图表报告,支持tsung_stats.pl
l perl5 安装报告需要用到
centos自动安装
l gnuplot 图形库
yum install -y gnuplot gd libpng zlib
查看看gnuplot版本
l 报告模板:
http://template-toolkit.org/download/index.html
cd /usr/local/
wget http://cpan.org/modules/by-module/Template/Template-Toolkit-2.26.tar.gz
tar -zxvf Template-Toolkit-2.26.tar.gz
cd Template-Toolkit-2.26/
perl Makefile.PL
make
make test
make install
如果生产Makefile时,报错:
解决办法:
yum install –y perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
然后重新执行 perl Makefile.PL
4、 安装 python 和 matplotlib
图表对比,支持tsung-plotter
系统自带python
安装matplotlib
pip install matplotlib
如果没有安装pip,执行以下操作:
l yum install python-pip
l 没有python-pip包就执行命令 yum -y install epel-release
l 执行成功之后,再次执行yum install python-pip
l 对安装好的pip进行升级 pip install --upgrade pip
安装好pip,再执行pip install matplotlib
以上就把需要基本包都安装完了!
注意:如果需要使用PostgreSQL、mysql、LDAP等模块还需安装相应的插件
5、 配置环境变量
修改/etc/profile文件使其永久性生效,并对所有系统用户生效export PATH=$PATH:$JAVA_HOME/bin:/usr/local/erlang/bin:/usr/local/tsung/bin:$PATH
另外在文件末尾增加ulimit –n 65536,设置文件句柄数,后文将详细介绍。
最后:执行 命令source /etc/profile或 执行点命令 ./profile使其修改生效,执行完可通过echo $PATH命令查看是否添加成功