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的具体信息。

 

posted @ 2017-11-23 16:22  低调人生  阅读(2566)  评论(0编辑  收藏  举报