tsung

tsung是指開源的多協定分散式負載測試工具,根據erlang語言開發。

介紹

一個開源的多協定分散式負載測試工具,使用erlang語言開發的。

作用

它能用來壓力測試HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP 和 Jabber/XMPP的伺服器。它可以分布在多個客戶機,並能夠模擬成千上萬的虛擬用戶數並發。

用法

下面的描述以HTTP壓力測試為例。

準備知識

了解ssh的key認證機制。

單“客戶機”壓測

“小型”的壓力測試一般不需要很多tsung客戶機,一台tsung就可以打出很大的壓力,因為tsung使用了epoll技術,在一個進程中,就可以管理上萬級別的socket(注意ulimit -n的限制),相對於其它壓力測試工具(比如webbench)使用多執行緒,在打出相同壓力的情況下,tsung對客戶機資源的消耗要小得多得多。另外,tsung又可以多進程,使用系統的SMP特性,相比於ab這樣的工具(ab也是使用epoll技術,但是ab只能單進程——需要手動啟動多個來達到多進程的目的,多進程才可以充分使用CPU的多核),可以更充分地利用客戶機的硬體資源。

單客戶機壓測,架構最簡單。其Clients端如下配置:

<clients>

<client host="bj-tsung1" use_controller_vm="true"/>

</clients>

執行時,將配置檔案複製到bj-tsung1,然後在bj-tsung1上執行“啟動壓測”命令:

tsung -f tsung.xml start

“客戶機”集群壓測

當一台壓測機,不能滿足壓力需求;或者為了更逼真地模似真實壓力時,可台使用“tsung客戶機集群“來打壓務。

假如我們有bj-tsung[1-4] 4台tsung客戶機(安裝了相同erlang、tsung版本的機器),Clients段配置如下:

<clients>

<client host="bj-tsung1"maxusers="800" cpu="8"/>

<client host="bj-tsung2"maxusers="800" cpu="8"/>

<client host="bj-tsung3"maxusers="800" cpu="8"/>

<client host="bj-tsung4"maxusers="800" cpu="8"/>

</clients>

注意,執時啟動命令時,要在一台能ssh登錄bj-tsung[1-4]這4台機器,而且不需要輸入密碼的機器上執行。

比如我有一台bj-login1,這台機器登錄bj-tsung[1-4]不需要密碼(使用key認證),我就可以在bj-login1上執行啟動壓測命令:

tsung -f tsung.xml start

這時,可以看到bj-tsung[1-4]上啟動了很多erl進程,就是tsung客戶機在執行了。

HTTP測試常見問題

我遇到的兩個問題是:

如何自定義http的"Host"頭兒,以避免使用/etc/hosts檔案。

如何讓tsung使用”壓縮“方式接收數據。

上面兩個問題的解法如下:

1.

如何自定義http的"Host"頭兒,以避免使用/etc/hosts檔案。

2.

如何讓tsung使用”壓縮“方式接收數據。

上面兩個問題的解法如下:

<request>

<http url="/" method="GET" version="1.1">

<http_header name="Accept-Encoding" value="gzip,deflate"/>

<http_header name="Host" value="domainname"/>

</http>

</request>

相關詞條

相關搜尋

熱門詞條

聯絡我們