Tsung筆記之開篇
前言
有測試驅動的開發模式,目的在于確保業務層面功能是準確的,每一次新增、修改等動作確保都不會影響到現有功能。功能開發完成了,需要部署到線上,系統能夠承載多大的用戶量呢,這時候就需要借助于性能壓測,也稱之為壓力測試,界定系統能夠承載具體容量上限,從容應對業務的運營需要,擴容或縮容,心中有底。
工欲善其事,必先利其器。掌握一種壓測工具,并切實應用到實踐環境中,并以此不斷迭代,壓力測試驅動推動所開發后端應用處理性能逐漸完善。
目前成熟的支持支持TCP、HTTP等連接通道的壓測工具不少,以前接觸過Apache JMeter,后面又接觸過Tsung,因為在實際環境下使用比較多,支持豐富的業務場景定義,并且可擴展性強,因此Tsung強力推薦之。
為什么要選擇Tsung
- 基于Erlang,并發處理性能好,可以模擬足夠多海量用戶,只要你有足夠多的機器
- 受益于Erlang,天然支持分布式,很歡快的運行在一個集群中
- 支持協議眾多 WebDAV/WebScoket/MQTT/MySQL/PGSQL/Shell/AQMP/JABBER/XMPP/LDAP 等
- 傳輸通道支持 TCP/UDP/SSL,更底層支持IPv4/IPv6
- 支持單機綁定多個IP:無論是虛擬IP,還是物理網卡綁定IP,可以突破單機端口65535的限制,擴展盡可能多的網絡連接出口地址
- 支持監控被壓測的服務器,通過Erlang Agent/SNMP/Munin
- 壓測細節XML可配置,這是一個完全基于情景的壓力測試行為清單,依賴于你的想象,呈現完整業務的表達
- 場景可以是動態的,來自于文件、代碼或者服務器響應可以構成下一個請求的參數,這就是可編程的請求嘛
- 行為可以混搭,回話可以在不同場景中,按照不同的行為規范各自平行進行
- 休眠,或暫停機制,是可以隨機的,親
- 壓測用戶產生方式,動態有序或隨機
總之,Tsung是一款開源的高性能分布式壓力測試工具,支持可編程的情景化測試方案,要向發揮它的特性,依賴于人們的想象力和創造性。
為什么要壓力測試驅動呢 ?
軟件/系統架構往往著眼于總體結構,這個可以是一個逐漸完善的過程。這種自我的不斷完善的驅動往往來自于實踐、線上考驗。而壓力測試可以提供一種推動,盡心盡力暴露著架構在性能容量存在的一些不足和缺陷,促使著向著更好的方向發展。
系統的構建依賴于具體參與執行的人,就算是一群資深的工程師,業務上每一次功能的快速更迭、任何潛在局部修改都會導致影響、拖垮整體性能,這就是人們常說的 ”蝴蝶效應“,牽一發而動全身。
如何提早感知并且提早修復,這就需要壓力測試的驅動,并且壓力測試應該成為一個常規化的例行行為,日常化的動作。在每一次修改之后,都要過一輪的壓測的碾壓之后,提供當前后端應用處理的性能、容量等具體指標,用于指導后續業務上線業務的開展。
實際操作上的建議
在一般互聯網公司,一般線上程序修改后之后,需要經過QA團隊/部門全部功能回歸、校驗之后才能夠上線,往往缺少壓測環節,因為他/她們并不保證系統處理性能和容量是否惡化,系統的性能建立在系統總體的功能上,如何避免在性能上出現”牽一發而動全身“,建議有條件的QA同學/團隊考慮增加性能壓測環節,功能 + 性能雙重回歸,修改影響點清晰、透明化。
筆記列表
本系列筆記,基于tsung-1.6.0源碼基礎上分析,運行環境為Linux Centos 6。
筆記列表:
- Tsung筆記之主從模型篇
- Tsung筆記之主從資源協調篇
- Tsung筆記之壓測端資源限制篇
- Tsung筆記之分布式增強跳出SSH羈絆篇
- Tsung筆記之IP直連支持篇
- Tsung筆記之監控數據收集篇
- Tsung筆記之插件編寫篇
- Tsung筆記之100萬用戶壓測執行步驟篇
- Tsung筆記之IP地址和端口限制突破篇
為了方便理解,一些用詞說明:
- 主節點,也稱之為Master Node,指的是運行tsung_controller的應用服務實例,運行tsung啟動應用自動產生“tsung_controller@機器名/IP”節點名稱,一般使用過Erlang的同學會很明白
- 從節點,即tsung client應用實例,對應 tsung/src/tsung 項目代碼,由tsung_controller主節點控制啟動、關閉、任務分配等
小結
參與一個實時性交互強的項目,從一開始單機支撐不夠1萬用戶、平均請求響應時間約900毫秒,到目前混合部署的單機支撐50萬用戶、平均響應時間為16毫秒,這個過程中Tsung不斷的壓測推動著架構逐漸穩定、系統承載容量、QPS優化等完全達標。這是一個壓力測試驅動性能改進的流程,每一步的改進能夠得到正向反饋。
這一系列筆記,所談核心是Tsung,無論是認知還是改進,最終都是為了理解利器的方方面面,方便著手于實踐環境中,壓測所帶來的能量能夠驅動我們的程序/服務性能提升、穩定運行,進而更好方便我們進行容量規劃、線上部署等。
posted on 2016-07-22 15:36 nieyong 閱讀(5541) 評論(1) 編輯 收藏 所屬分類: 壓測