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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM