zoukankan      html  css  js  c++  java
  • tsung压力测试——tcp测试tsung.xml配置模版说明

    Tsung解析Tsung.xml配置文件  见http://blog.csdn.net/libing1991_/article/details/47684433

    <?xml version="1.0"?>
    <!DOCTYPE tsung SYSTEM "/usr/local/share/tsung/tsung-1.0.dtd">
    <tsung loglevel="info" dumptraffic="true" version="1.0">
    
      <!-- weight 集群时有用-->
      <!-- maxusers 产生测试用户数-->
       <!-- Client side setup -->
          <!-- 集群Client设置 -->
          <!-- host必须是主机名,不能是IP地址 -->
          <!-- weight: 节点上面用户的比例,一般设置为1即可 -->
          <!-- maxusers: 一般设置为800,3000即可,根据机器配置来设置大小 超过这个数目
               会自动开启更多的节点-->
          <!-- cpu: 根据机器硬件配置来设置,如果是4核CPU,最佳设置为3,以此类推 -->
      <clients>
        <client host="localhost" weight="1" maxusers="10" use_controller_vm="true"/>
      </clients>
    
      <!-- 测试服务器配置信息 -->
      <servers>
        <server host="localhost" port="8102" type="tcp"></server>
      </servers>
    
      
      <!-- load段可配置访问的负载,访问可以配成多个阶段,由phase值指定。duration是测试持续时间,unit是单位
       users段的maxnumber限制了生成的最大用户数,interarrival=”0.02”表示0.02秒产生一个新用户,用户按照session的配置顺
    序执行session中的request
       -->
       <!-- 负载场景设置 -->
    
          <!-- phase:阶段,填数字即可,系统会按顺序执行,可以设置多个阶段组合场景 -->
          <!-- duration:持续时段,填数字即可,单位是unit="minute"设置,是分钟 
          也可设置小时,天,详细情况参考API -->
          <!-- arrivalrate:虚拟用户数,填写数字即可,一般最大800,如过机器配置好,可自己调试最佳参数 
          有效单位unit="second" 是秒,每秒虚拟300个虚拟用户,实际执行情况可能超过,也可能达不到,需要根据调试得到最佳参数 -->
          <!-- interarrival: 时间间隔默认是2秒产生一个用户 这个选项可以和arrivalrate互相调换 -->
          <!-- maxnumber: 这个是设置最大用户数,所产生的总用户数不会超过这个 -->
      <load>
        <arrivalphase phase="1" duration="1" unit="minute">
          <users arrivalrate="2" unit="second"></users>
        </arrivalphase>
      </load>
    
    
     <sessions>
    
    <!-- 测试接口配置信息 -->
     <session probability="100" name="raw" type="ts_raw">
    
        <!-- 随机生成15位数   -->
        <!-- 调用这个随机生成数 %%_iemi_%%    ,前提 <request> 必须配 subst="true"-->
        <setdynvars sourcetype="random_string" length="15">
              <var name="imei" />
        </setdynvars>
    
    
    
        <!-- 这里可以配置多个事物,每个事物代表一个接口请求-->
        <transaction name="login">
           <request subst="true">
                 <!-- 向 服务器 发送 data 这段 数据 -->
                 <raw data="[SG*%%_imei%%*000D*LK,50,100,100]" ack="no_ack"></raw>
           </request>
        </transaction>
        <!--  会话持续时间 10 秒,即10后tcp断开连接  -->
        <thinktime value="10"/>
      </session>
     </sessions>
    </tsung>

    配置文件

    打开 http_simple.xml ,下面来讲几个关键的配置。

    clients

    用户产生的方式

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

    tsung运行时可以由很多的虚拟机组成,client配置指明这个client机器上最多生成的用户数,如果use_controller_vm为true的话,那么当用户数达到maxusers,tsung会自动生成新的VM。

    servers

    <servers>
      <server host="garden.blue.jude.poppen.lab" port="80" type="tcp"></server>
    </servers>

    server段可以配置被测服务器的相关信息,也可以配置成集群,如下

    <servers>
      <server host="server1" port="80" type="tcp" weight="4"></server>
      <server host="server2" port="80" type="tcp" weight="1"></server>
    </servers>

    tsung会根据weight值来选择发起请求的server

    monitoring

    系统监控服务,配置完后可获取被测server的cpu,内存,负载,数据库的相关信息。可以配置成erlang的监控服务和snmp的监控服务。

    <monitoring>
      <monitor host="garden" type="erlang">
        <mysqladmin port="3306" username="root" />
      </monitor>
    </monitoring>

    load

    <load>
      <arrivalphase phase="1" duration="3" unit="minute">
        <users maxnumber="100" interarrival="0.02" unit="second" ></users>
      </arrivalphase>
    </load>

    load段可配置访问的负载,访问可以配成多个阶段,由phase值指定。duration是测试持续时间,unit是单位。

    users段的maxnumber限制了生成的最大用户数,interarrival=”0.02”表示0.02秒产生一个新用户,用户按照session的配置顺序执行session中的request。

    options

    <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>
     </options>

    options段可配置一些请求的信息,如agent信息。

    sessions

    <sessions>
      <session name="http-example" probability="70" type="ts_http">
        <setdynvars sourcetype="random_number" start="1" end ="100">
          <var name="itemid" />
        </setdynvars>
        <transaction name='getlist'>
          <request subst="true">
            <http url="/comment/getList" method="POST" contents = "item_type=image&amp;item_id=%%_itemid%%"></http>
          </request>
        </transaction>
      </session>
      <session name="http-example" probability="30" type="ts_http">
        <setdynvars sourcetype="random_number" start="1" end="100">
          <var name="itemid" />
        </setdynvars>
        <setdynvars sourcetype="random_number" start="20" end="5000000">
          <var name="content" />
        </setdynvars>
        <transaction name='getlist'>
          <request subst="true">
             <http url="/comment/addComment" method="POST" contents = "item_type=image&amp;item_id=%%_itemid%%&amp;content=%%_content%%"></http>
          </request>
        </transaction>
      </session>
    </sessions>

    可配置多个子session,进而可测试多个api,可以设置请求概率,在probability里被定义,要求每个session的probability之和是100。类型是http。

    sessions里可用for来设定请求次数,如下

    <for from="1" to="@loop" incr="1" var="counter">

    在里面可以设置请求的具体信息。在请求参数里可以带上随机数。随机数和随机字符串的定义如下:

    <setdynvars sourcetype="random_number" start="20" end="5000000">
      <var name="xxx" />
    </setdynvars>
    <setdynvars sourcetype="random_string" length="10">
      <var name="xxx" />
    </setdynvars>

    %%_xxx%%的形式来调用,这里必须注意的是,要使用随机数,request必须加上subst=”true”参数,不然随机数无法被引用成功。随机数也可从文件读取,如csv。

    http内部可定义header参数:

    <http_header name="Authorization" value="111"/>
    <http_header name="Cookie" value="authToken=%%_auth_token%%; Path=/"/>
    <!-- content-Type:POST请求参数的格式,如果是json格式可以这样写 -->
    <http_header name="Content-Type" value="application/json"/>

    thinktime可用于定义两个请求的间隔时间

    <thinktime value="1"/>

    另外可定义不同的transaction ,这样子结果里就会显示不同transaction的具体信息。

  • 相关阅读:
    Devexpress之LayoutControl的使用及其控件布局设计
    C#入门笔记3 表达式及运算符2
    C#入门笔记3 表达式及运算符
    C#入门笔记2 变量
    C#入门笔记1
    Devexpress之GridControl显示序列号
    C++学习之重载运算符1
    解决"找不到该项目”无法删除该文件
    删除鼠标右键时“保存至360云盘”
    CSS基础知识——选择器
  • 原文地址:https://www.cnblogs.com/lemon-flm/p/7885509.html
Copyright © 2011-2022 走看看