您的位置:首页 > 其它

服务器压力测试系列一:压力测试工具tsung安装

2013-06-04 15:58 501 查看
tsung是用erlang写的一个工具,号称压垮无数服务器。官网地址 http://tsung.erlang-projects.org

一、安装依赖包

要安装它首先要安装依赖包。参考官方文档 http://tsung.erlang-projects.org/user_manual.html#htoc18

我是有选择性的安装了下面东西:

Erlang/OTP 、 gnuplot and perl5 、Template Toolkit

1、Erlang/OTP

也就是erlang的安装。查找官方文档 http://www.erlang.org/doc/installation_guide/INSTALL.html#How-to-Build-and-Install-ErlangOTP

找到3.5 How to Build and Install Erlang/OTP

按照文档一步一步来就是。

./configure的时候报错,说java模块以及odbc模块未找到。odbc模块的话我是centOS系统,直接yum install unixODBC unixODBC-devel

注意我不需要用到java,所以 ./configure --prefix=/usr/local/erlang --without-javac

然后就是make && make install。make的时候比较慢,大概要等个5、6分钟

2、gunplot

这玩意说白了就是一个绘图软件,把数据整成图形。为图简单我直接就是 yum install gunplot

3、Template Toolkit

也是个模板,把数据搞成一个html页面。后续会讲到用tsung_stat.pl命令生成reprot.html

安装挺简单的,查看官方文档 http://www.template-toolkit.org/download/index.html 一步一步来就行

二、安装tsung

它的安装也简单,就是三部曲 进入到目录执行 ./configure make && make install

但是我这里遇到了一点小麻烦,configure的时候报错,找不到erl和erlc。运行下configure --help的时候发现可以指定erlang的安装目录。

上面我把erlang安装到了/usr/local/erlang,于是 ./configure --with-erlang=/usr/local/erlang/bin

后面就一路安装成功了

三、测试tsung

tsung安装完成后会有配置的demo,默认的demo放在/usr/share/doc/tsung/examples里面,但是我在居然么找到这个目录。

最后在/usr/local/share/doc/tsung/examples找到了,由于我只用http,所以我就复制了http_simple.xml

一般情况下安装完tsung会在/root/下生成一个叫.tsung的系统默认目录,但是我居然又没找到,坑爹!!

于是我在/usr/local下新建了一个tsung目录

把http_simple.xml 重命名为tsung.xml放到这个目录下。

测试下能不能运行,tsung start 。报错了。找不到/root/.tsung/tsung.xml。好吧,手动指定,先在/usr/local/tsung下建立一个log目录

tsung -f /usr/local/tsung/tsung.xml -l /usr/local/tsung/log start 。 ok了运行成功

四、配置tsung

好了,剩下的就是配置了

用vim编辑tsung.xml

1、client端

如果是单台机器的话use_controller_vm =true,否则的话tsung过一段时间会重新开一个erlang进程重新压,这个重开的过程其实是降低压力的过程。我理解的大概就是这个意思。官方文档如此说

arn:Tsung launches a new erlang virtual machine to do the actual injection even when you have only one machine in the injection cluster (unless ’use_controller_vm’ is set to true). This is because it needs to by-pass some limit with the number of open socket from a single process (1024 most of the time). The idea is to have several system processes (Erl beam) that can handle only a small part of the network connection from the given computer. When the maxusers limit (simultaneous) is reach, a new Erlang beam is launched and the newest connection can be handled by the new beam).

  <clients>
    <client host="localhost" use_controller_vm="true" maxusers="60000" />
  </clients>

2、server端

  <servers>
    <server host="tsung所在服务器的ip" port="80" type="tcp"></server>
  </servers>

3、load

  <arrivalphase phase="1" duration="3" unit="minute">
    <users maxnumber="60000" interarrival="0.01" unit="second"></users>
  </arrivalphase>

表示压力测试时间持续3分钟,每秒中产生 1/0.01 = 100个用户,一直到产生60000个用户后就不再产生。这个是跟上面的use_controller_vm相对应的

4、sessions

增加递增, 用于可能多、快的产生请求,见 http://tsung.erlang-projects.org/user_manual.html#htoc94

<for from="1" to="5000" var="i">

request><http url="你要压的地址" method="GET" version="1.1"></request>

</for>

五、开始压测

tsung -f /usr/local/tsung/tsung.xml -l /usr/local/tsung/log start

一段时间后进入log目录,运行 tsung_stat.pl命令就会生成report.html

在浏览器打开就能看到相关的数据

六、后续

it's just a beginning,由于时间匆匆,官方文档没有仔细研读,好多的配置项没有了解。而且client还可以做成分布式的、多台机器同时压服务器、monit监控、模拟浏览器录制脚本等,这些都留待后续研究。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: