這次再公開一個小工具 easy_runner 一個來用做壓測的小工具
我主要用來做MySQL壓測的時候,直接壓業(yè)務(wù)端用的.
程序很簡單,總共不到400來行,推薦程序員自己壓測用,比LoadRunner這種重型壓測工具使用起來方便多了
下載可以到 http://code.google.com/p/easy-runner/ checkout出源碼來
使用說明見 http://code.google.com/p/easy-runner/wiki/Usage
介紹
一個Python實(shí)現(xiàn)的簡單壓測工具
Details
Easy Runner主要實(shí)現(xiàn)了多線程壓測,類似LoadRunner?,能得出QPS和RT,并能通過matlibplot畫出曲線圖.
特性
- 支持多scenario同時執(zhí)行
- 可為不同scenario設(shè)置think time和線程數(shù)
- 支持warming
- 可畫出性能曲線
- 使用方便,啟動迅速,一條命令即可開始壓測
優(yōu)勢
- scenario直接使用python編寫scenario,使天然支持多協(xié)議
- Easy Runner一共300來行代碼,維護(hù)方便
劣勢
- 是通過多線程來加大壓力,對客戶端要求較高,不能有太多的線程數(shù)
使用說明
設(shè)置篇
見easy_runner下的setting.py進(jìn)行配置
- MONITOR_INTERVAL = 1 #設(shè)置性能監(jiān)控的時間間隔,默認(rèn)為1s,設(shè)的越小數(shù)據(jù)越正確
- SCENARIOS_PATH=(“./scenario”,) #設(shè)置劇本的存放路徑,可以設(shè)置多個路徑,程序會從設(shè)置的路徑載入劇本
- LOG_PATH_AND_FILE_NAME = “D:\\tmp\\runner.log” #設(shè)置log存放路徑,壓測信息都會記錄在這個log下,以便分析和作圖
- PIC_SAVE_PATH_AND_PREFIX = “D:\\tmp\\pic” #設(shè)置性能曲線的生成路徑和文件前綴.可設(shè)為None,如果為None,生成的圖片會直接以窗口方式打開
- THREAD_RULE=(10,3) #線程預(yù)熱規(guī)則,前一個參數(shù)表示預(yù)熱間隔,后一個參數(shù)表示每次預(yù)熱會啟動的線程數(shù),可設(shè)為None,如果為None,則無預(yù)熱
劇本編寫篇
例子見附件中的easy_runner\scenario\example.py 這是一個壓測劇本 其中
- thread_num=200 為為這個劇本開啟的并發(fā)線程數(shù)
- think_time = 0 為這個劇本執(zhí)行時的think time 單位為秒
- run_count = 1000 為這個腳本的執(zhí)行次數(shù)
- name=”update” 指定這個劇本的名字,如果不同的劇本使用相同的名字,那么在最后做性能曲線時,相同名字的數(shù)據(jù)會進(jìn)行合并顯示
- def init(self): 劇本初始化函數(shù)
- def action(self): 劇本會被重復(fù)執(zhí)行的函數(shù)..需要返回True為成功,False為失敗
- def destory(self): 劇本執(zhí)行完后的資源釋放函數(shù)
注意,劇本的類名必須是class Scenario(core.scenario.abstract_scenario):
使用篇
如果已經(jīng)做好了設(shè)置,也編寫好了腳本即可以開始壓測了. 開始壓測很簡單,直接在命令行鍵入python starter.py 就會開始壓測. 這個時候會根據(jù)MONITOR_INTERVAL設(shè)置的時間間隔,直接輸出QPS和RT信息,并同時開始記log (注:如果log已存在的話,原log會被重命名) 如果需要停止壓測,在命令行直接輸入q 回車 即可結(jié)束壓測.
生成圖形篇
生成圖形也很簡單,直接在命令行鍵入python plot.py 就是自動分析剛才的log文件生成圖形(plot.py需要matlibplot的支持~)
圖形樣例如下:




轉(zhuǎn):http://blog.zephyrleaves.net/?p=292 |