一、了解Tsung
压力测试工具。类似Loadrunner,比loadrunner给力。
更多了解Tsung http://tsung.erlang-projects.org/user_manual.html
二、tsung的工作原理(转载)
(1) Tsung的每一个虚拟用户就是一个erlang的轻量进程。这点和loadrunner有很大的区别。
(2) 虚拟用户完成session后就消失。
(3) 大量的虚拟用户(erlang轻量进程)建立在erlangVM上。
(4) 一台测试机可以启多个erlangVM,目前按照1个cpu启动1个erlangVM。
分布式部署Tsung在运行时,会产生ssl_esock、beam、beam.smp3种进程,ssl-esock是erlangVM用的port程序, 协助完成ssh功能;beam是单处理器版本的erlangVM;beam.smp就是control程序,负责协调系统的运作。
三、Tsung 安装与使用(部分转载)
感谢高磊童鞋提供技术指导,目前终于能够基本理解并使用Tsung进行压力测试。以下总结Tsung安装与使用。
1. 准备
Linux 虚拟机、Tsung安装包、erlang安装包。由于tsung 依赖与 erlang 所以必须先安装erlang。虚拟机器记得安装GCC等开发工具,否则无法编译安装erlang。
2. 编译安装
./configure
make
make install
安装完成之后的 tsung 运行脚本在 /usr/bin/tsung ,在系统 path 之中,可以直接运行。
安装完成后可以whereis 命令可显示相关指令路径:whereis tsung
3. 设置
从 /usr/local/share/doc/tsung/examples 中挑一两个例子拷贝到 ~/.tsung/tsung.xml 作为配置文件。我只需要 http 测试,所以:cp /usr/local/share/doc/tsung/examples/http_simple.xml ~/.tsung/tsung.xml. tsung 采用了巧妙的 proxy 方式来“录制”测试脚本。具体来说,就是建立一个本机的 http proxy 默认使用 8090 端口,在配好浏览器代理之后,所有“流经”这个 proxy 的 http 动作都会被记录下来,测试时可以“回放”这些步骤来产生请求。
注意:没有运行过tsung 是不会在根目录生成.tsung文件的
配置代理服务器,由于Tsung 默认使用的是8090端口,我们必须在所测浏览器中使用代理服务器。
推荐Google浏览器插件:Proxy Switchy!
a ) 查看Tsung机的IP
b ) 将测试环境代理服务器IP设置为Tsung机的IP,并将端口改为8090
4. 录制脚本:
1. 使用tsung-recorder start 开启脚本录制。以下有提示该端口为8090,所以之前要先设置代理服务器
2. 开始录制脚本。打开google浏览器对测试环境进行操作(测试点)
打开网页拉、用户登陆拉、购买商品流程拉… 等等
3. 使用tsung-recorder stop 关闭脚本录制。会有提示 [OK]
“录制”完了,会得到一个 ~/.tsung/tsung_recorderXXXXXXXXXX.xml 文件,这就是测试时回回放的脚本。将这个脚本加到 tsung.xml 之中
注:如果发现tsung_recorderXXXXXXXXXX.xml 文件中没有内容,说明录制失败了请检查以上各步骤。并使用service iptables stop 该命令关闭防火墙,防火墙可能导致您的8090端口无法出去。
$2
就像这样
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd" [
<!ENTITY mysession1 SYSTEM"/home/yourname/.tsung/tsung_recorderXXXXXXXXXX.xml">
]>
...
<sessions>
&mysession1;
</sessions>
对配置稍作调整
<monitoring>
<monitor host="localhost" type="erlang"></monitor>
</monitoring>
<!-- 需要配置到 localhost 无须密码的 ssh 登录(ssh via rsa_key),开启了这个配置可以,获得目标机器的 cpu 和 ram 消耗情况 -->
<load>
<arrivalphase phase="1" duration="1" unit="minute">
<users interarrival="2" unit="second"></users>
</arrivalphase>
</load>
<!-- 第1阶段1分钟(你可以自己多搞几个阶段),其中每2秒新建一个用户,每个用户都会完整执行 session 的测试脚本,最高并发约为 30 个,个人认为这个“逐渐加压”的方法比 ab xxxx 的“突然加压”要慢一些,但更科学一点 -->
运行
准备好了,加压运行。
tsung start
运行完,在 ~/.tsung/log 目录会生成一个以时间命名的目录,进入这个目录
cd ~/.tsung/log/xxxxx
/usr/lib/tsung/bin/tsung_stats.pl
生成 html 的压力测试报告
firefox report.html
慢慢欣赏吧。
除了 http 以外 tsung 还可以压很多东西,比如:jabber, postgreSQL 还可以写插件来给任何你想要测试的东西加压,配置文件也很“丰富多彩”,更多的内容情看文档