1. 程式人生 > >漫遊測試之效能測試(3.4、Tsung的介紹 一)

漫遊測試之效能測試(3.4、Tsung的介紹 一)

tsung是erlang開發的一個開源的多協議分散式負載測試工具,它能用來壓力測試HTTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP和Jabber/XMPP的伺服器的效能。其區別於其它效能測試工具最大特點在於高效能。利用其多節點叢集能力,相同的機器配置相對於其它效能測試工具可以製造更高的併發,分散式叢集能夠提供很好的容錯能力、和資料一致性,能夠支撐大概100萬的效能測試。

其缺點是,基於XML的指令碼編輯模式,在除錯上面較困難一些,另外基於erlang語言的擴充套件在不熟悉erlang語言的情況下還是比較困難的。個人覺得,該工具非常適合海量併發,具有一定業務邏輯的介面方面的效能測試,適合海量併發情況下求一些介面的TPS的處理。

3.4.1.Tsung的安裝方法

安裝erlang語言依賴

下載原始碼進行安裝

./configure

make && make install

安裝成功

Tsung安裝

wget http://tsung.erlang-projects.org/dist/tsung-1.7.0.tar.gz

./configure

安裝成功

3.4.2.Tsung的全域性配置

client用來配置壓力機的地址(同樣需要安裝tsung,啟動slave)。

<clients>

  <client host="localhost" use_controller_vm=

"true"/></clients>

<servers>

  <server host="192.168.1.1" 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>

配置SSL是否啟用,並且指定SSL版本。

<option name="ssl_reuse_sessions" value="false"/>

<option name="ssl_versions" value="'tlsv1.2'"/>

配置緩衝區大小,預設是32K。

<option name="tcp_snd_buffer" value="16384"></option>

<option name="tcp_rcv_buffer" value="16384"></option>

<option name="udp_snd_buffer" value="16384"></option>

<option name="udp_rcv_buffer" value="16384"></option>

設定連線超時時間。

<option name="connect_timeout" value="5000" />

設定HTTP請求訪問時所使用的瀏覽器的分配。

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

3.4.3.Tsung的虛擬IP配置

Host下同綁定了多個IP供本地壓力機使用(關於配置本機多IP的方法,請利用搜索引擎)。

<clients>

  <client host="louxor" weight="1" maxusers="800">

    <ip value="10.9.195.12"></ip>

    <ip value="10.9.195.13"></ip>

  </client>

  <client host="memphis" weight="3" maxusers="600" cpu="2"/></clients>

<servers>

  <server host="10.9.195.1" port="8080" type="tcp"></server></servers>

可以直接使用一段IP地址來做為壓力機或者伺服器地址

<iprange version="v4" value="172.28.1-20.0-254"/>

3.4.4.Tsung的場景配置

第1個階段,每2秒載入1個使用者,持續執行10分鐘後加載第2階段,第2階段每秒載入1個使用者持續10分鐘後加載第3階段,第3階段每隔0.1秒載入1個使用者持續10分鐘。

<load>

  <arrivalphase phase="1" duration="10" unit="minute">

    <users interarrival="2" unit="second"></users>

  </arrivalphase>

  <arrivalphase phase="2" duration="10" unit="minute">

    <users interarrival="1" unit="second"></users>

  </arrivalphase>

  <arrivalphase phase="3" duration="10" unit="minute">

    <users interarrival="0.1" unit="second"></users>

  </arrivalphase>

</load>

注意,單節點預設使用800個Vuser,最大核心可以支援3萬個Vuser。

增加maxnumber的描述,可以設定每個階段的最大併發數。

<arrivalphase phase="1" duration="10" unit="minute">

  <users maxnumber="100" arrivalrate="10" unit="second"></users>

</arrivalphase>

<arrivalphase phase="2" duration="10" unit="minute">

  <users maxnumber="200" arrivalrate="10" unit="second"></users>

</arrivalphase>

增加session_setup的probability的描述,可以按場景的比例進行設定。

<arrivalphase phase="3" duration="1" unit="minute">

  <session_setup name="http_test_1" probability="80"/>

  <session_setup name="fake"        probability="20"/>

  <users  interarrival="1" unit="second"/>

</arrivalphase>

在上一個階段併發使用者完成後才能啟動下一個階段的併發數

<arrivalphase phase="1" duration="10" unit="minute" wait_all_sessions_end="true">

  <users  interarrival="1" unit="second"/>

</arrivalphase>

<arrivalphase phase="2" duration="10" unit="minute">

  <users  interarrival="5" unit="second"/>

</arrivalphase>