﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Fingki 's Blog-随笔分类-About test</title><link>http://www.blogjava.net/fingki/category/36832.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 19 Dec 2008 14:15:58 GMT</lastBuildDate><pubDate>Fri, 19 Dec 2008 14:15:58 GMT</pubDate><ttl>60</ttl><item><title>Tsung 安装与使用</title><link>http://www.blogjava.net/fingki/archive/2008/12/01/243650.html</link><dc:creator>Fingki.li</dc:creator><author>Fingki.li</author><pubDate>Mon, 01 Dec 2008 02:43:00 GMT</pubDate><guid>http://www.blogjava.net/fingki/archive/2008/12/01/243650.html</guid><wfw:comment>http://www.blogjava.net/fingki/comments/243650.html</wfw:comment><comments>http://www.blogjava.net/fingki/archive/2008/12/01/243650.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/fingki/comments/commentRss/243650.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fingki/services/trackbacks/243650.html</trackback:ping><description><![CDATA[Tsung，压力测试的好工具。<br />
安装过程：<br />
1.获取tsung 的源码。http://tsung.erlang-projects.org/<br />
2.安装依赖 erlang(从源码编译 erlang 写的程序) gnuplot perl5(如果想看 report 中的图形，就要装这个)<br />
apt-get install erlang erlang-src gnuplot perl5 我用的是Ubuntu 8 OS.<br />
3.编译安装<br />
./configure<br />
make<br />
sudo make install<br />
<br />
安装完成之后的 tsung 运行脚本在 /usr/bin/tsung ，在系统 path 之中，可以直接运行。<br />
<br />
<p><strong>设置</strong></p>
<p>从 /usr/share/doc/tsung/examples 中挑一两个例子拷贝到 ~/.tsung/tsung.xml 作为配置文件。我只需要 http 测试，所以：</p>
<div>
<div>cp /usr/share/doc/tsung/examples/http_simple.xml ~/.tsung/tsung.xml</div>
</div>
<p>tsung 采用了巧妙的 proxy 方式来&#8220;录制&#8221;测试脚本。具体来说，就是建立一个本机的 http proxy 默认使用 8090
端口，在配好 firefox 使用 localhost 8090 作为代理之后(推荐 foxyproxy 插件)，所有&#8220;流经&#8221;这个 proxy
的 http 动作都会被记录下来，测试时可以&#8220;回放&#8221;这些步骤来产生请求。</p>
<div>
<div>tsung rocorder<br />
tsung stop_recorder</div>
</div>
<p>&#8220;录制&#8221;完了，会得到一个 ~/.tsung/tsung_recorderXXXXXXXXXX.xml 文件，这就是测试时回回放的脚本。</p>
<p>将这个脚本加到 tsung.xml 之中</p>
<div>
<div>gedit ~/.tsung/tsung.xml</div>
</div>
<p>就像这样</p>
<div>
<div><span style="color: Olive;">&lt;</span><span style="color: Gray;">!</span><span style="color: rgb(0, 0, 139);">DOCTYPE</span><span style="color: rgb(0, 0, 139);">tsung</span><span style="color: rgb(0, 0, 139);">SYSTEM</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: Red;">/usr/share/tsung/tsung-1.0.dtd</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: Gray;"> [<br />
&nbsp;&lt;!</span><span style="color: rgb(0, 0, 139);">ENTITY</span><span style="color: rgb(0, 0, 139);">mysession1</span><span style="color: rgb(0, 0, 139);">SYSTEM</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: Red;">/home/yourname/.tsung/tsung_recorderXXXXXXXXXX.xml</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />
]&gt;<br />
...<br />
</span><span style="color: Olive;">&lt;</span><span style="color: Green;">sessions</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />
&nbsp; </span><span style="color: Navy;">&amp;mysession1;</span><span style="color: Gray;"><br />
</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">sessions</span><span style="color: Olive;">&gt;</span></div>
</div>
<p>对配置稍作调整</p>
<div>
<div><span style="color: Olive;">&lt;</span><span style="color: Green;">monitoring</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />
&nbsp;&nbsp; &nbsp;</span><span style="color: Olive;">&lt;</span><span style="color: Green;">monitor</span><span style="color: rgb(0, 0, 139);">host</span><span style="color: Gray;">=</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: Red;">localhost</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: rgb(0, 0, 139);">type</span><span style="color: Gray;">=</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: Red;">erlang</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">monitor</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />
&nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">monitoring</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />
&nbsp; </span><span style="color: rgb(255, 165, 0);">&lt;!-- 需要配置到 localhost 无须密码的 ssh 登录(ssh via rsa_key)，开启了这个配置可以，获得目标机器的 cpu 和 ram 消耗情况 --&gt;</span><span style="color: Gray;"><br />
&nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">load</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />
&nbsp;&nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">arrivalphase</span><span style="color: rgb(0, 0, 139);">phase</span><span style="color: Gray;">=</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: Red;">1</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: rgb(0, 0, 139);">duration</span><span style="color: Gray;">=</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: Red;">1</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: rgb(0, 0, 139);">unit</span><span style="color: Gray;">=</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: Red;">minute</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />
&nbsp;&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">users</span><span style="color: rgb(0, 0, 139);">interarrival</span><span style="color: Gray;">=</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: Red;">2</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: rgb(0, 0, 139);">unit</span><span style="color: Gray;">=</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: Red;">second</span><span style="color: rgb(139, 0, 0);">"</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">users</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />
&nbsp;&nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">arrivalphase</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />
&nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">load</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />
&nbsp; </span><span style="color: rgb(255, 165, 0);">&lt;!-- 第1阶段1分钟(你可以自己多搞几个阶段)，其中每2秒新建一个用户，每个用户都会完整执行 session 的测试脚本，最高并发约为 30 个，个人认为这个&#8220;逐渐加压&#8221;的方法比 ab xxxx 的&#8220;突然加压&#8221;要慢一些，但更科学一点 --&gt;</span></div>
</div>
<p><strong>运行</strong></p>
<p>准备好了，加压运行。</p>
<div>
<div>tsung start</div>
</div>
<p>运行完，在 ~/.tsung/log 目录会生成一个以时间命名的目录，进入这个目录</p>
<div>
<div>cd ~/.tsung/log/xxxxx<br />
/usr/lib/tsung/bin/tsung_stats.pl （有时可能是 /usr/local/lib/tsung/bin/tsung_stats.pl)<br />
</div>
</div>
<p>生成 html 的压力测试报告</p>
<div>
<div>firefox report.html</div>
</div>
除了 http 以外 tsung 还可以压很多东西，比如：jabber, postgreSQL 还可以写插件来给任何你想要测试的东西加压.<br />
<img src ="http://www.blogjava.net/fingki/aggbug/243650.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fingki/" target="_blank">Fingki.li</a> 2008-12-01 10:43 <a href="http://www.blogjava.net/fingki/archive/2008/12/01/243650.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>