一、了解Tsung

压力测试工具。类似Loadrunner,比loadrunner给力。      

更多了解Tsung  http://tsung.erlang-projects.org/user_manual.html

 

二、tsung的工作原理(转载)

1 Tsung的每一个虚拟用户就是一个erlang的轻量进程。这点和loadrunner有很大的区别。

2 虚拟用户完成session后就消失。

3 大量的虚拟用户(erlang轻量进程)建立在erlangVM上。

4 一台测试机可以启多个erlangVM,目前按照1cpu启动1erlangVM

分布式部署Tsung在运行时,会产生ssl_esockbeambeam.smp3种进程,ssl-esockerlangVM用的port程序, 协助完成ssh功能;beam是单处理器版本的erlangVMbeam.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  个,个人认为这个&ldquo;逐渐加压&rdquo;的方法比 ab xxxx 的&ldquo;突然加压&rdquo;要慢一些,但更科学一点 -->

运行

准备好了,加压运行。

tsung start

运行完,在 ~/.tsung/log 目录会生成一个以时间命名的目录,进入这个目录

cd ~/.tsung/log/xxxxx
/usr/lib/tsung/bin/tsung_stats.pl

生成 html 的压力测试报告

firefox report.html

慢慢欣赏吧。

除了 http 以外 tsung 还可以压很多东西,比如:jabber, postgreSQL 还可以写插件来给任何你想要测试的东西加压,配置文件也很&ldquo;丰富多彩&rdquo;,更多的内容情看文档