分布式部署Tsung在运行时,会产生ssl_esock、beam、beam.smp3种进程,ssl-esock是erlangVM用的port程序, 协助完成ssh功能;beam是单处理器版本的erlangVM;beam.smp就是control程序,负责协调系统的运作。
#####################################################################3
最近用上了 Tsung ,传说中“压垮了N台服务器”的 Erlang 压力测试工具啊。在这里记一下流水帐。
安装
获取tsung 的源码
确保依赖关系
tsung 依赖了这些东西 erlang(废话,从源码编译 erlang 写的程序,能不装么) gnuplot perl5(如果想看 report 中的图形,就要装这个),将其一一装上。
编译安装
安装完成之后的 tsung 运行脚本在 /usr/bin/tsung ,在系统 path 之中,可以直接运行。
设置
从 /usr/share/doc/tsung/examples 中挑一两个例子拷贝到 ~/.tsung/tsung.xml 作为配置文件。我只需要 http 测试,所以:
tsung 采用了巧妙的 proxy 方式来“录制”测试脚本。具体来说,就是建立一个本机的 http proxy 默认使用 8090 端口,在配好 firefox 使用 localhost 8090 作为代理之后(推荐 foxyproxy 插件),所有“流经”这个 proxy 的 http 动作都会被记录下来,测试时可以“回放”这些步骤来产生请求。
“录制”完了,会得到一个 ~/.tsung/tsung_recorderXXXXXXXXXX.xml 文件,这就是测试时回回放的脚本。
将这个脚本加到 tsung.xml 之中
就像这样
对配置稍作调整
运行
准备好了,加压运行。
运行完,在 ~/.tsung/log 目录会生成一个以时间命名的目录,进入这个目录
生成 html 的压力测试报告
慢慢欣赏吧。
除了 http 以外 tsung 还可以压很多东西,比如:jabber, postgreSQL 【传说:MYSQL比较粗放】还可以写插件来给任何你想要测试的东西加压,配置文件也很“丰富多彩”,更多的内容情看文档。
进入测试日志的路径,如/home/iamlaobie/.tsung/log/20110528-21:07,运行上面的脚本,运行完成之后,在该路径下生成report.html,如果在linux上不方便查看,可将该路径打包下载本地用浏览器打开report.html查看。
报告中的几个相似概念:
request:类似用php函数file_get_contents请求一个url地址的相应时间
page:一组没有间隔的request请求的时间总和,相当于打开一个页面,除了加载页面的html外,还要加载img、css、js等
session:一个用户从第一个请求开始到最后一个请求结束的时间总和
5、其他
5.1、tsung-recorder,通过它可以录制用户的访问过程,然后用tsung回放,让压力测试更逼真。实际上recorder是一个http代理,启动recorder后,将浏览器的代理指向它,默认端口是8090,用户只需要用浏览器浏览被测试的服务器,tsung-recorder会将这个过程写入到配置文件中。
5.2、添加请求的变量,在压力测试的过程中,可能需要手机号,用户ID、股票代码之类的变量,tsung支持文件随机读取,可以将这些参数按照一定的规则写入文件,在配置文件中定义读取的规则,就能在请求时拿到文件的内容。定义一个文件服务:
<options>
<option name="file_server" id="file1" value="/tmp/x.txt"/>
</options>
读取,在session段中加入
<setdynvars sourcetype="file" fileid="file1" delimiter=";" order="random">
<var name="username" />
</setdynvars>
<request>
<http url="/b.php?username=%%_username%%" method="GET" version="1.1"></http>
</request>
除了从文件读取,也可以随机产生
<setdynvars sourcetype="random_string" length="13">
<var name="rndstring1" />
</setdynvars>
参考网址:
http://blog.csdn.net/bxc168/article/details/6020683
http://wwwzhouhui.iteye.com/blog/451298