前言
總是說細節(jié)、理論,會讓人不勝其煩。我們使用Tsung來一次100萬用戶壓測的吧,或許能夠引起好多人的興趣 :))
下面,我根據(jù)在公司分享的PPT《分布式百萬用戶壓測你的業(yè)務》,貼出其中的關鍵部分,說明進行一次100W(即1M)用戶壓測的執(zhí)行步驟。
如何做分布式百萬用戶的壓測 ?
假定面向小白用戶,因此才有了下面可執(zhí)行的10個步驟用于開展分布式百萬用戶。
?
看著步驟很多,一旦熟悉并掌握之后,中間可以省卻若干。
1. 閱讀Tsung文檔
?
建議大家在使用Tsung之前,花費一點時間閱讀完整個用戶手冊,雖然是英文的,閱讀起來也不復雜。讀完之后,我們也就知道如何做測試了,遇到的大部分問題,也能夠在里面找到答案。
2 確定壓測目標
?
- 要對線上系統(tǒng)壓測100萬用戶,為了盡可能降低線上服務器負載壓力,這里設置每秒產(chǎn)生500個用戶,將在60分鐘內(nèi)產(chǎn)生完畢
- 要壓測的服務器所填寫網(wǎng)絡訪問地址可以根據(jù)需要填寫多個
3. 計算所需要從機數(shù)量
?
?
?
?
?
?
- Tsung為主從模型,我們啟動了主節(jié)點之后,主節(jié)點會按需啟動從節(jié)點
- 設定所用服務器可用內(nèi)存大于3G,并且都只有一個IP地址
- 一臺從機可用模擬6萬用戶,需要17臺從機
- 若資源充足,可以少用幾臺服務器,配置多個IP地址
- 找到所需要的壓測用服務器,在資源層面滿足測試測試集群需要,這個是關鍵
4. 部署Tsung
?
因為Tsung依賴于Erlang,因此需要首先安裝:
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
sudo yum install erlang
然后再是安裝Tsung,建議直接使用Tsung 1.6.0修改版,主要提供IP只連支持(具體細節(jié),可參考這里 http://m.tkk7.com/yongboy/archive/2016/07/28/431354.html ):
git clone https://github.com/weibomobile/tsung-1.6.0.git
./configure --prefix=/usr/local
make install
5. 下載SSH替代者-tsung—rsh
?
為什么要替換掉SSH,主要原因:
- SSH在一般網(wǎng)絡機房環(huán)境內(nèi)服務器之間被禁止連接通信,這會導致主節(jié)點無法啟動從節(jié)點,無法建立分布式壓測集群
- 就算是SSH沒被禁用,主從之間需要設置免秘鑰SSH登錄方式,十分麻煩
可進一步參考:Tsung筆記之分布式增強跳出SSH羈絆篇。
6. 編寫壓測內(nèi)容
?
?
?
要把業(yè)務定義的所有會話內(nèi)容完整的整理映射成Tsung的會話內(nèi)容,因為用戶行為很復雜,也需要我們想法設法去模擬。
其實,演示所使用的是私有協(xié)議,可以參考 Tsung筆記之插件編寫篇 。
當完成壓測會話內(nèi)容之后,users_100w.xml
文件已經(jīng)填寫完畢,我們可以開始壓測了。
7. 運行Tsung
?
- -F 10.10.10.10 主節(jié)點IP地址,IP直連特性
- -rsh rsh_client.sh 遠程終端,SSH通道被替換
- -s 壓測端啟用erlang smp特性,按需使用所有CPU核心
我們啟動了從節(jié)點,然后從節(jié)點被啟動,開始執(zhí)行具體壓測任務了。
8. 壓測過程中,我們該做什么
?
緊密關注服務器服務狀態(tài)、資源占用等情況就對了,最好還要作為一個終端用戶參與到產(chǎn)品體驗中去。
9. 壓測結(jié)束,生成Tsung報表
?
Tsung壓測結(jié)束之后,不會主動生成壓測結(jié)果報表的,需要借助于 tsung_stats.pl
perl腳本生成,要查閱可借助python生成臨Web站點,瀏覽器打開即可。
10. 回顧和總結(jié)
?
小結(jié)
其實,一旦熟悉并掌握Tsung之后,步驟1-6都可以節(jié)省了,循環(huán)執(zhí)行步驟7-10。
你若以為僅僅只是談論Tsung如何做1M用戶壓測,那就錯了,只要機器資源夠,這個目標就很容易實現(xiàn)。我們更應該關注,我們壓測的目的是什么,我們應該關注什么,這個應該形成一個完整可循環(huán)過程,驅(qū)動著系統(tǒng)架構健康先前發(fā)展。