`
275553385
  • 浏览: 731847 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
文章分类
社区版块
存档分类
最新评论

Tsung配置文件详解

阅读更多
<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/local/share/tsung/tsung-1.0.dtd"[
<!ENTITY ecstore SYSTEM "/root/.tsung/ecstore.xml">
]>
<!-- loglevel:工具写日志的标识,级别默认是"info",长时间运行建议调整为error -->
<!-- dumptraffic:运行的调试信息dump文件,如需要看脚本是否正确可以设置为"true",级别默认是"false",长时间运行建议调整为false -->
<tsung loglevel="notice" version="1.0">

  <!-- Client side setup -->
  <!-- 集群Client设置 -->
  <!-- host必须是主机名,不能是IP地址 -->
  <!-- weight: 节点上面用户的比例,一般设置为1即可 -->
  <!-- maxusers: 一般设置为800,3000即可,根据机器配置来设置大小 超过这个数目
       会自动开启更多的节点-->
  <!-- cpu: 根据机器硬件配置来设置,如果是4核CPU,最佳设置为3,以此类推 -->

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

  <!-- Server side setup -->
  <!-- host: 填别名,需要先去host文件配置 -->
  <!-- port: 填可用对外端口,一般80 -->
  <!-- type: 协议类型,tsung支持tcp/udp,根据自己的需要 -->
  <!-- weight 设置权重,整数型 -->
<servers>
  <server host="192.168.1.3" port="80" type="tcp"></server>
</servers>

  <!-- 监控(cpu, network, memory). 使用erlang或SNMP,erlang是默认值 
  但是要保证监控的机器和server可以互相访问,装有erlang,否则用snmp -->
  <!-- 默认的snmp端口是161 默认的版本是v1 -->
  <monitoring>
    <monitor host="192.168.1.3" type="snmp">
      <snmp version="v2" community="public" port="161">
       <!-- 统计IO读,单位是blocks/s -->
       <oid name="io_sent" value=".1.3.6.1.4.1.2021.11.5.0" ></oid>
       <!-- 统计IO写,单位是blocks/s -->
       <oid name="io_receive" value=".1.3.6.1.4.1.2021.11.6.0" ></oid>
      </snmp>
    </monitor>
  </monitoring>

  <!-- 负载场景设置 -->
  <load>
  <!-- several arrival phases can be set: for each phase, you can set
  the mean inter-arrival time between new clients and the phase
  duration -->
  <!-- phase:阶段,填数字即可,系统会按顺序执行,可以设置多个阶段组合场景 -->
  <!-- duration:持续时段,填数字即可,单位是unit="minute"设置,是分钟 
  也可设置小时,天,详细情况参考API -->
  <!-- arrivalrate:虚拟用户数,填写数字即可,一般最大800,如过机器配置好,可自己调试最佳参数 
  有效单位unit="second" 是秒,每秒虚拟300个虚拟用户,实际执行情况可能超过,也可能达不到,需要根据调试得到最佳参数 -->
  <!-- interarrival: 时间间隔默认是2秒产生一个用户 这个选项可以和arrivalrate互相调换 -->
  <!-- maxnumber: 这个是设置最大用户数,所产生的总用户数不会超过这个 -->
   <arrivalphase phase="1" duration="10" unit="minute">
     <users arrivalrate="50" unit="second"></users>
   </arrivalphase>
   <!-- 如果你想设置分时间阶段的会话可以这样,这个这里的session必须是录制的脚本或者自己添加的session  -->
   <user session="session1" start_time="185" unit="second"></user>
   <user session="session2" start_time="10" unit="minute"></user>
   <user session="session3" start_time="11" unit="minute"></user>
  </load>

  <options>
   <option type="ts_http" name="user_agent">
    <!-- 设置浏览器类型 probability为所占总的浏览器类别的百分比 -->
    <user_agent probability="80">Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Galeon/1.3.21</user_agent>
    <user_agent probability="20">Mozilla/5.0 (Windows; U; Windows NT 5.2; fr-FR; rv:1.7.8) Gecko/20050511 Firefox/1.0.4</user_agent>
   </option>
  </options>

  <!-- start a session for a http user. the probability is the
  frequency of this type os session. The sum of all session's
  probabilities must be 100 -->

 <sessions>
  <!-- 设置多个session
       weight 权重 -->
  <session name="session1" weight="2" type="ts_http">

   <!-- 变量的设置需要在session中设置 -->

   <!-- 如果是引用外部的csv文件需要先设置fileid-->
   <options>
    <option name="file_server" id="user_list" value="users.csv"></option>
   </options>
   <!-- sourcetype:根据需求,参考API,我这里是csv文件 -->
   <!-- fileid:根据tsung.xml内的option文件操作的id一致 -->
   <!-- order:我这里选择的random随机,根据需求参考API -->
   <!-- delimiter: 设置分割符 也就是上边csv文件中存储的账号密码之间的连接符 -->
   <!-- name:这个变量的名称 -->
   <setdynvars sourcetype="file" fileid="user_list" order="random">
    <var name="userid" ></var>
   </setdynvars>
   <!-- sourcetype:根据需求,参考API,我这里是csv文件 -->
   <!-- fileid:根据tsung.xml内的option文件操作的id一致 -->
   <!-- order:我这里选择的random随机,根据需求参考API -->
   <!-- name:这个变量的名称 -->
   <setdynvars sourcetype="file" fileid="userdb" order="random">
    <var name="user" ></var>
   </setdynvars>
   <!-- sourcetype:根据需求,参考API,random_number随机数字 -->
   <!-- start:开始数字 -->
   <!-- end:结束数字 -->
   <!-- name:这个变量的名称 -->
   <setdynvars sourcetype="random_number" start="1" end="40">
    <var name="rndint" ></var>
   </setdynvars>
   <!-- 在request中需要指定subst="true"来使用替换 -->
   <request subst="true"></request>
   <!-- 在手动指定的session中的某个请求中加入等待时间,也可以在录制的脚本中加入,下面是随机等待时间 -->
   <thinktime value='%%_rndthink%%' random='true'></thinktime>
  </session>
  <session name="session2" weight="1" type="ts_http"></session>
  <!-- 只有一个录制的session的时候可以这样调用 -->
  &ecstore;
 </sessions>
</tsung>



<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/local/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" version="1.0">

  <!-- Client side setup -->
  <clients>
      <client host="localhost" use_controller_vm="true"  maxusers="9999"/>
        </clients>
          
  <!-- Server side setup -->
<servers>
  <server host="www.demo.com" port="80" type="tcp"></server>
  </servers>

  <!-- to start os monitoring (cpu, network, memory). Use an erlang
         agent on the remote machine or SNMP. erlang is the default --> 
  
  <load>
    <!-- several arrival phases can be set: for each phase, you can set
           the mean inter-arrival time between new clients and the phase
             duration -->
 <arrivalphase phase="1" duration="120" unit="minute">
<users arrivalrate="15" unit="second"/>
           </arrivalphase>
<arrivalphase phase="2" duration="120" unit="minute">
<users arrivalrate="20" unit="second"/>
</arrivalphase>
<arrivalphase phase="3" duration="120" unit="minute">
<users arrivalrate="25" unit="second"/>
</arrivalphase>
<arrivalphase phase="4" duration="120" unit="minute">
<users arrivalrate="30" unit="second"/>
</arrivalphase>
  </load>

  <options>
     <option type="ts_http" name="user_agent">
         <user_agent probability="80">Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050513 Galeon/1.3.21</user_agent>
             <user_agent probability="20">Mozilla/5.0 (Windows; U; Windows NT 5.2; fr-FR; rv:1.7.8) Gecko/20050511 Firefox/1.0.4</user_agent>
                </option>
                   <option name="file_server" id="productname" value="/root/.tsung/productname.csv"/>
                        <option name="file_server" id="productid" value="/root/.tsung/productid.csv"/>
                          </options>

  <!-- start a session for a http user. the probability is the
         frequency of this type os session. The sum of all session's
           probabilities must be 100 -->

 <sessions>
  
        <session name='index' probability='20'  type='ts_http'>
                    <request>
                                    <http url='/index.php' version='1.1' method='GET'>
                                                    <http_header name="Accept-Encoding" value="gzip,deflate"/>
                                                                    </http>
                                                                                </request>
                                                                                        </session>

		 <session name='search' probability='50'  type='ts_http'>
		             <setdynvars sourcetype="file" fileid="productname" delimiter=";"  order="iter">
		                             <var name="goods_name" />
		                                         </setdynvars>
		                                                     <request  subst="true">
		                                                                     <http url='/index.php/gallery.html?scontent=%%_goods_name%%' version='1.1' method='GET'>
		                                                                                     <http_header name="Accept-Encoding" value="gzip,deflate"/>
		                                                                                                     </http>
		                                                                                                                 </request>
		                                                                                                                         </session>

        <session name='product' probability='21'  type='ts_http'>
                    <setdynvars sourcetype="file" fileid="productid"  delimiter=";" order="iter">
                                    <var name="random_id" />
                                                </setdynvars>
                                                            <request subst="true">
                                                                            <http url='/?product-%%_random_id%%.html' version='1.1' method='GET'>
                                                                                            <http_header name="Accept-Encoding" value="gzip,deflate"/>
                                                                                                            </http>
                                                                                                                        </request>

        </session>

        <session name='radom' probability='3'  type='ts_http'>
                    <request>
                                    <http url='/article-help-l-1.html' version='1.1' method='GET'>
                                                    <http_header name="Accept-Encoding" value="gzip,deflate"/>
                                                                    </http>
                                                                                </request>
                                                                                        </session>

        <session name='radom1' probability='3'  type='ts_http'>
                <request>
                                <http url='/article-news-55.html' version='1.1' method='GET'>
                                                <http_header name="Accept-Encoding" value="gzip,deflate"/>
                                                                </http>
                                                                            </request>
                                                                                    </session>

        <session name='radom2' probability='3'  type='ts_http'>
                    <request>
                                    <http url='/article-news-l-11.html' version='1.1' method='GET'>
                                                    <http_header name="Accept-Encoding" value="gzip,deflate"/>
                                                                    </http>
                                                                                </request>
                                                                                        </session>



     </sessions>
     </tsung>

分享到:
评论
2 楼 JYY282 2013-11-21  
1 楼 275553385 2013-11-05  
http://tsung.erlang-projects.org/

Tsung压力测试工具的工作原理介绍
(1)  Tsung的每一个虚拟用户就是一个erlang的轻量进程。这点和loadrunner有大区别。
(2)  虚拟用户完成session后就消失。
(3)  大量的虚拟用户(erlang轻量进程)建立在erlangVM上。

Tsung安装包、erlang安装包、Perl ( 生成报告所需模块)、图形库gnuplot等
1.erlang
2.perl
3.gnuplot

yum install gd libpng zlib

erlang安装:
http://www.erlang.org/download/otp_src_R15B02.tar.gz
tar zxvf otp_src_R15B02.tar.gz
cd otp_src_R15B02
./configure
make
make install

gnuplot安装:
wget http://nchc.dl.sourceforge.net/project/gnuplot/gnuplot/4.4.0/gnuplot-4.4.0.tar.gz
tar -zxvf gnuplot-4.4.0.tar.gz
cd gnuplot-4.4.0
./configure
make
make install

template-toolki安装:
wget http://www.cpan.org/modules/by-module/Template/Template-Toolkit-2.24.tar.gz
tar zxf Template-Toolkit-2.24.tar.gz
cd Template-Toolkit-2.24
perl Makefile.PL
make
make install

配置Tsung:

~/.tsung/tsung.xml为tsung默认的配置文件,但我们安装后会发现这个目录和文件并不存在,那就由我们手动来创建这个目录。
mkdir /home/.tsung

在/usr/share/doc/tsung/examples/中有一些示例文件,可以参考jabber_register.xml文件来编写自己的tsung.xml。
cp /usr/share/doc/tsung/examples/jabber_register.xml ~/.tsung/tsung.xml

启动Tsung
tsung start/stop/debug/status
tsung -f /home/.tsung/tsung.xml start

进入日志目录
cd /root/.tsung/log/20120913-1436

运行脚本生成报表文件
/usr/local/lib/tsung/bin/tsung_stats.pl

相关推荐

    tsung+erlang包

    2. **启动阶段**:使用 `tsung start` 命令启动测试,Tsung 会根据配置文件创建虚拟用户并开始发送请求。 3. **运行阶段**:Tsung 持续监控系统性能,并记录各种指标,如响应时间、吞吐量、失败率等。 4. **结束阶段...

    Tsung负载测试tigase

    5. **运行测试**:启动Tsung服务,命令为`tsung start`或指定特定配置文件如`tsung -f jabber.xml start`。 6. **查看结果**:测试结果会被记录在`~/.tsung/log/`目录下,通过运行`/usr/lib/tsung/bin/tsung_stats....

    tsung安装使用说明

    ### Tsung 安装与使用详解 #### 一、Tsung 概述 Tsung 是一款基于 Erlang 开发的高性能压力测试工具,主要用于评估系统的并发处理能力。它支持多种协议,包括 HTTP、WebDAV、Jabber/XMPP、PostgreSQL、LDAP 和 ...

    基于Kubernetes的分布式压力测试方案

    具体步骤包括编写配置文件(如`tsung-slave-svc.yaml`和`tsung-slave.yaml`),并通过`kubectl`命令创建相关资源。 3. **部署Tsung Master**:同样使用StatefulSet部署Tsung Master节点,并确保其可以通过集群内部...

    pimpinella_3cd_01_0716.pdf

    pimpinella_3cd_01_0716

    FIB English learning

    FIB English learning

    linux下 jq 截取json文件信息

    X86-jq安装包

    [AB PLC例程源码][MMS_046356]SELX.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    大圣挪车小程序1.3.5+前端.zip

    大圣挪车小程序1.3.5 前端

    Manus.im 产品及开发团队研究报告.pdf

    Manus.im 产品及开发团队研究报告.pdf

    [AB PLC例程源码][MMS_044663]Control daisy chain wiring in Fieldbus Foundation.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    sun_3ck_01a_0918.pdf

    sun_3ck_01a_0918

    支持适用于PERC H330/H730/H730P/H830/H730P系列RAID卡MX/FD33xD/FD33xS控制器的驱动安装指南

    下载 1. 单击“立即下载”,以下载该文件。 2. 出现“文件下载”窗口后,单击“保存”,以将文件保存到硬盘。 安装 1. 浏览至文件下载目标位置并双击新下载的文件。 2. 仔细阅读对话窗口中显示的发布信息。 3. 下载并安装对话窗口中标识的任何必备项,然后再继续。 4. 单击“Install”(安装)按钮。 5. 按照其余提示执行更新。 安装 1. 将解压的文件复制到可访问Windows的介质。 2. 将系统重新引导至Windows操作系统。 3. 打开“服务器管理器”->“设备管理器”->“存储控制器”,然后单击“PERC控制器”。 5. 单击“更新驱动程序软件”,并按照提示更新驱动程序。 4. 重新引导系统以使更改生效。

    硬盘安装器,支持硬盘安装,无需制作U盘PE!

    支持所有操作系统一键安装。

    matlab程序代码项目案例:使用 Simulink 进行自适应 MPC 设计

    matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    [AB PLC例程源码][MMS_044098]1769-ASCII Simultaneous Mode.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    swanson_01_1106.pdf

    swanson_01_1106

    [AB PLC例程源码][MMS_047811]SAF1 - Store.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    [AB PLC例程源码][MMS_043879]Programming in SFC and ST Language.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    sun_3ck_01_0919.pdf

    sun_3ck_01_0919

Global site tag (gtag.js) - Google Analytics