溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

高并發(fā)測試工具Tsung使用方法

發(fā)布時間:2021-09-13 09:27:34 來源:億速云 閱讀:337 作者:柒染 欄目:大數(shù)據(jù)

高并發(fā)測試工具Tsung使用方法,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

tsungerlang開發(fā)的一款開源的多協(xié)議分布式負(fù)載并發(fā)測試工具,

可用作HTTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP 和 Jabber/XMPP的服務(wù)器壓力測試。

tsung可分布在多個客戶機(jī),并能夠模擬成千上萬的虛擬用戶數(shù)并發(fā)。

1 下載安裝

Tsung 已經(jīng)在Linux、FreeBSD和Solaris上通過測試,

其他系統(tǒng),只要支持Erlang語言的平臺上,也是可以工作的(Linux、Solaris、*BSD、Win32 和 Mac OS X)。

Mac OS X通過 Homebrew 即可安裝 tsung,命令:

brew install tsung

Ubuntu 安裝也很簡單,命令:

apt-get install tsung

其他系統(tǒng)需要先下載源碼包再安裝,源碼包下載地址:

  • http://tsung.erlang-projects.org/dist/

tsung 1.6.0為例,下載安裝命令:

wget http://tsung.erlang-projects.org/dist/tsung-1.6.0.tar.gz  # 以1.6.0版本為例
tar -zxf tsung-1.6.0.tar.gz   # 解壓
cd tsung-1.6.0                # 進(jìn)入目錄
./configure                   # 配置,生成 Makefile 文件
make                          # 編譯
make install                  # 安裝

configure 的時候,如果沒有安裝 tsung 依賴的 Erlang 語言庫,會提示下面的錯誤:

...
checking for Erlang/OTP root directory... configure: error: in `/root/tsung-1.6.0':
configure: error: test Erlang program execution failed
...

可以用下面的命令先安裝erlang,再 configure。

brew install erlang        # OS X Homebrew
port install erlang        # OS X MacPorts
apt-get install erlang     # Ubuntu 和 Debian
yum install erlang         # Fedora
pkg install erlang         # FreeBSD

其他系統(tǒng)需要從源碼安裝 Erlang,稍微復(fù)雜一些,可參考:https://github.com/erlang/otp/blob/maint/HOWTO/INSTALL.md 。

2 運行

tsung安裝完成后,會生成兩個命令文件:

  1. tsung

  2. tsung-recorder

默認(rèn)生成在 /usr/local/bin 目錄下,使用-h參數(shù)可以查到它們所有的參數(shù):

tsung -h

在啟動 tsung 之前,我們需要一個 XML 格式的配置文件,tsung會根據(jù)該配置文件進(jìn)行測試。

/usr/share/doc/tsung/examples 目錄下有一些 XML 配置文件范例,

將其中HTTP測試配置文件 http_simple.xml 拷貝到當(dāng)前目錄,

再執(zhí)行,命令如下:

cp /usr/local/share/doc/tsung/examples/http_simple.xml ./   # 拷貝范例配置文件
tsung -f http_simple.xml start                              # 指定xml文件并開始。如果不指定,則默認(rèn)使用 ~/.tsung/tsung.xml

這個命令會打印出測試的日志目錄,直到測試結(jié)束。

3 結(jié)果

tsung 測試結(jié)束后,測試結(jié)果 Log 保存在目錄 ~/.tsung/log/ 下。

當(dāng)啟動一個新的測試時,會在這個目錄下面創(chuàng)建一個新的子目錄,用以保存測試的數(shù)據(jù)。

Log 格式為當(dāng)前日期和時間的組合,例如:~/.tsung/log/20160217-0940。

默認(rèn)情況下,控制節(jié)點會啟動一個嵌入的網(wǎng)站服務(wù)器,偵聽8091端口(可以用 -n 選項禁用)。

測試過程也可以用tail命令查看實時記錄:

tail -f ~/.tsung/log/20140430-1126/tsung.log

測試結(jié)束之后,再用tsung_stats.pl生成報表。

yum install gnuplot       # tsung_stats.pl 需要用到的 gnuplot
mkdir http_simple         # 創(chuàng)建用以保存報表的目錄
cd http_simple            # 進(jìn)入目錄
/usr/local/lib/tsung/bin/tsung_stats.pl --stats ~/.tsung/log/20160305-0933/tsung.log  # 生成報表

之后,會在 http_simple 目錄下生成3個目錄和1個 log 文件,其中 images 目錄下就是報表圖片,類似如下。

高并發(fā)測試工具Tsung使用方法   高并發(fā)測試工具Tsung使用方法

以上僅是測試,沒有實際用處,因為沒有配置要測試的網(wǎng)站,所以所得到的結(jié)果沒有實際意義。

需要修改 XML 配置文件后再測試,才會得到有意義的結(jié)果。

4 配置文件

打開 http_simple.xml ,下面來講幾個關(guān)鍵的配置。

4.1 clients

用戶產(chǎn)生的方式:

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

tsung運行時可以由很多的虛擬機(jī)(VM)組成,client配置指明這個client機(jī)器上最多生成的用戶數(shù),

如果use_controller_vmtrue的話,那么當(dāng)用戶數(shù)達(dá)到maxusers,tsung會自動生成新的虛擬機(jī)。

4.2 servers

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

server段可以配置被測服務(wù)器的相關(guān)信息,也可以配置成集群,如下

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

tsung會根據(jù)weight值來選擇發(fā)起請求的server。

4.3 monitoring

系統(tǒng)監(jiān)控服務(wù),配置完后可獲取被測server的CPU、內(nèi)存、負(fù)載、數(shù)據(jù)庫等相關(guān)信息。

可以配置成erlang的監(jiān)控服務(wù)和snmp的監(jiān)控服務(wù)。

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

4.4 load

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

load段可配置訪問的負(fù)載,訪問可以配成多個階段,由phase值指定。

duration是測試持續(xù)時間,unit是單位。

users段的maxnumber限制了生成的最大用戶數(shù),

interarrival="0.02"表示0.02秒產(chǎn)生一個新用戶,用戶按照session的配置順序執(zhí)行session中的request。

4.5 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信息。

4.6 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,進(jìn)而可測試多個api,

可以設(shè)置請求概率,在probability里定義,

要求每個sessionprobability之和是100,類型是http。

sessions里可用for來設(shè)定請求次數(shù),如下

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

在里面可以設(shè)置請求的具體信息。

在請求參數(shù)里可以帶上隨機(jī)數(shù)。

隨機(jī)數(shù)和隨機(jī)字符串的定義如下:

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

%%_xxx%%的形式來調(diào)用。

這里必須注意的是,要使用隨機(jī)數(shù),request必須加上subst="true"參數(shù),不然隨機(jī)數(shù)無法被引用成功。

隨機(jī)數(shù)也可從文件讀取,如csv。

http內(nèi)部可定義header參數(shù):

<http_header name="Authorization" value="111"/>
<http_header name="Cookie" value="authToken=%%_auth_token%%; Path=/"/>
<!-- content-Type:POST請求參數(shù)的格式,如果是json格式可以這樣寫 -->
<http_header name="Content-Type" value="application/json"/>

thinktime可用于定義兩個請求的間隔時間

<thinktime value="1"/>

另外可定義不同的transaction ,這樣子結(jié)果里就會顯示不同transaction的具體信息。

看完上述內(nèi)容,你們掌握高并發(fā)測試工具Tsung使用方法的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI