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&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&item_id=%%_itemid%%&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的具體信息。