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。

筆記列表:

  1. Tsung筆記之主從模型篇
  2. Tsung筆記之主從資源協調篇
  3. Tsung筆記之壓測端資源限制篇
  4. Tsung筆記之分佈式增強跳出SSH羈絆篇
  5. Tsung筆記之IP直連支持篇
  6. Tsung筆記之監控數據收集篇
  7. Tsung筆記之插件編寫篇
  8. Tsung筆記之100萬用戶壓測執行步驟篇
  9. 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,無論是認知還是改進,最終都是爲了理解利器的方方面面,方便着手於實踐環境中,壓測所帶來的能量能夠驅動我們的程序/服務性能提升、穩定運行,進而更好方便我們進行容量規劃、線上部署等。

轉自:http://www.blogjava.net/yongboy/archive/2016/07/22/431291.html

發佈了79 篇原創文章 · 獲贊 126 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章