先來測一個靜態網頁。html
這裏能夠算tsung的文檔最坑的地方了。若是你照着官網上的入門指南一步一步作下來,我能夠告訴你必定跑不通!理由是,tsung給出的工具tsung-recorder生成的配置文件不是完整的配置文件!! 若是你想入門,請忘了tsung-recorder,並嚴格按照如下步驟操做,不然後果就是各類運行時異常。程序員
~/.tsung/tsung.xml
內容以下:瀏覽器
<?xml version="1.0"?> <!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd"> <tsung> <clients> <!-- 在這裏添加測試主機(客戶端) --> </clients> <servers> <!-- 在這裏添加被測試的主機(服務端) --> </servers> <load> <!-- 在這裏添加加載過程配置 --> </load> <sessions> <!-- 在這裏添加會話(即一系列HTTP請求) --> </sessions> </tsung>
以上是tsung最小配置的骨架,裏面的東西一個都不能少,並且必須按照這個順序來配置!!(該死的官方文檔,讀的時候有一種只見樹木不見森林的趕腳)。服務器
一個客戶端(client)是一個系統進程(Erlang/Elixir程序員注意,是系統進程,不是BEAM進程。一個系統進程就是一個Erlang虛擬機)。cookie
<clients> <client host="localhost" cpu="4" maxusers="30000"/> </clients>
這裏定義了一個客戶端,它在localhost這臺主機上開4個進程同時發送請求。最好把cpu
的值設得和該主機的CPU數量相等,過低沒法徹底利用測試主機性能,過高則有一些併發問題。Tsung保證會把這些進程分配到不一樣的CPU內核上。注意:即便客戶端開在本機上,Tsung也會經過SSH遠程開啓進程,並且不會使用密碼。因此請確保SSH配置爲PublicKey驗證,而且把localhost加進known_hosts。 若是實在不想用SSH開新進程,能夠配成下面這樣:session
<client host="localhost" use_controller_vm="true" maxusers="30000"/>
參數maxusers
設置了這個客戶端最多可同時虛擬多少個用戶,也就至關於併發量啦。注意,若是這個數值大於你的ulimit -Sn
,則tsung會開多個系統進程來確保這個數值。併發
服務端的配置相對簡單:dom
<servers> <server host="localhost" port="80" type="tcp"/> </servers>
因爲服務端(被測試)的應用能夠是任何HTTP應用,因此沒有Erlang進程的配置,熟悉HTTP的朋友應該一目瞭然了。tcp
Tsung有一個概念叫到達階段(arrival phase),它有如下幾個參數:工具
<load> <arrivalphase phase="1" duration="1" unit="minute"> <users arrivalrate="10000" unit="second"/> </arrivalphase> </load>
這裏定義了一個用戶到達階段(arrival phase),這個階段的總時長是1分鐘,在這一分鐘裏,每秒鐘會有1萬個虛擬用戶來訪問。你能夠添加更多階段,在每一個階段配置更多種用戶到達模式。
所謂會話,就是每一個用戶前後作哪些事情,對於HTTP的測試,固然就意味着發請求,收響應。Tsung對每一個會話會自動管理cookie。
<sessions> <session name="s1" type="ts_http"> <request> <http url="/" method="GET" version="1.1"/> </request> <thinktime min="2" max="10" random="true"> </session> </session>
在這個例子裏,每一個用戶的會話會作兩件事:
/
,並接收響應至此,整個配置完成。下面是完整的配置文件(~/.tsung/tsung.xml
)的內容:
<?xml version="1.0"?> <!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd"> <tsung> <clients> <client host="localhost" cpu="4" maxusers="30000"/> </clients> <servers> <server host="localhost" port="80" type="tcp"/> </servers> <load> <arrivalphase phase="1" duration="1" unit="minute"> <users arrivalrate="10000" unit="second"/> </arrivalphase> </load> <sessions> <session name="s1" type="ts_http" weight="1"> <request> <http url="/" method="GET" version="1.1"/> </request> <thinktime min="2" max="10" random="true"/> </session> </sessions> </tsung>
關於weight=1
這個配置,在單個session的狀況下沒有什麼做用,可是仍是得配。若是你有多種session,則weight表示每一種session的相對比例,例如你有兩種session,s1:weight=1
和s2:weight=2
,且一共有30000個用戶,則其中10000個用的session種類是s1,20000個是s2。
若是想配成更高級的配置(例如隨機請求參數、虛擬IP等)請參閱官方文檔。
接下來就讓咱們跑一下
$ tsung start
在跑的時候,咱們能夠打開瀏覽器,訪問http://localhost:8091/來查看摘要。不過說實話,這東西沒啥用,由於等測試跑完了,這個tsung的內置服務器也就關了(你能夠用tsung -k start
來阻止這個服務器自動關閉)。並且網頁也不會實時更新,還得你手動刷。
注意看tsung命令行的提示信息,它會告訴你log出在什麼位置,一般是~/.tsung/log/xxxx
。這個很重要,由於咱們立刻要進到這個目錄下去生成圖表!
首先cd
到上述的log位置,而後運行下列命令:
$ tsplot "Nginx" ./tsung.log -d .
這會在當前目錄下生成一堆圖表,有鏈接數、用戶數、請求數等,並且每一個指標都有大小兩張圖。本身去看吧。若是你想把報告出到其餘位置,只須要修改-d
後的參數就好了。
另外,若是想要一份完整的測試報告,能夠cd
到log目錄,運行
$ /usr/lib/tsung/bin/tsung_stat.pl