Locust(俗稱 蝗蟲), 一個(gè)輕量級(jí)的開源壓測(cè)工具婉宰,用Python編寫。
locustUI.png
網(wǎng)上已有不少的人總結(jié)了Locust與其余幾個(gè)性能測(cè)試翹楚之間的差異荆永。(燈光師包雀,麻煩往第三位佳麗這邊打亮一點(diǎn))
得分項(xiàng):?jiǎn)螜C(jī)并發(fā)能力,Python溅蛉,開源免費(fèi)
掉分項(xiàng):不支持資源監(jiān)控,報(bào)告異常簡(jiǎn)單
紙上得來(lái)終覺(jué)淺他宛,始知此事須躬行船侧。
安裝(和一切python第三方包安裝方式一致)
$ pip install locustio編寫一個(gè)Locust 文件(保存為 一個(gè)py文件,取任意名厅各,比如basic.py)
from locust import HttpLocust, TaskSet, task
def index(l):
l.client.get("/")
def stats(l):
l.client.get("/stats/requests")
class UserTasks(TaskSet):
# 列出需要測(cè)試的任務(wù)形式一
tasks = [index, stats]
# 列出需要測(cè)試的任務(wù)形式二
@task
def page404(self):
self.client.get("/does_not_exist")
class WebsiteUser(HttpLocust):
host = "http://127.0.0.1:8089"
min_wait = 2000
max_wait = 5000
task_set = UserTasks
- 在存放文件的目錄下以命令行方式運(yùn)行以上py文件
$locust -f basic.py
可見(jiàn)類似以下的畫面:
4.打開瀏覽器镜撩,輸入地址:http://127.0.0.1:8089,開啟Locust Web操作頁(yè)面
- 第一個(gè)輸入框:想并發(fā)的人數(shù)
- 第二個(gè)輸入框:虛擬用戶初始化的比例
比如上圖中的意思就是想測(cè)試1000個(gè)虛擬用戶對(duì)系統(tǒng)的壓測(cè),剛開始的時(shí)候是以10人/秒的速度開始遞增到1000人队塘。
點(diǎn)擊“”Start Swarming“”后你就可以開始?jí)簻y(cè)你想壓測(cè)的系統(tǒng)了袁梗。
- 查看執(zhí)行結(jié)果(上一步點(diǎn)擊后頁(yè)面會(huì)自動(dòng)刷新到結(jié)果頁(yè)面,但是需要手動(dòng)停止)
也可以切換到Charts看圖形化結(jié)果
目前只有每秒請(qǐng)求數(shù)憔古,平均響應(yīng)時(shí)間遮怜,用戶的增長(zhǎng)曲線 三個(gè)圖可看。
當(dāng)然鸿市,你也通過(guò) Download Data鏈接下載剛才的結(jié)果锯梁。
再回到剛開始的問(wèn)題即碗,什么是Locust呢?
locust是一個(gè)易于使用的陌凳,分布式的剥懒,用戶負(fù)載測(cè)試工具。用于web站點(diǎn)(或其他系統(tǒng))的負(fù)載測(cè)試合敦,然后算出系統(tǒng)能夠處理多少并發(fā)用戶初橘。
locust的思想是:在測(cè)試期間,一大群"蝗蟲"會(huì)攻擊你的網(wǎng)站充岛,每一個(gè)"蝗蟲"的行為都是由你自己定義的保檐,同時(shí),可以在一個(gè)web界面上實(shí)時(shí)的監(jiān)控這群進(jìn)程崔梗。這會(huì)幫助你更好的"進(jìn)行戰(zhàn)斗"展东,在真正的用戶進(jìn)入之前,就找出代碼中的瓶頸炒俱。
locust完全是事件驅(qū)動(dòng)的,因此它能夠在單機(jī)支持?jǐn)?shù)以千計(jì)的并發(fā)用戶爪膊,相比許多其他的基于事件的應(yīng)用权悟,locust不使用回調(diào)函數(shù)。它使用輕量進(jìn)程---gevent推盛。每一個(gè)訪問(wèn)你的網(wǎng)站的locust實(shí)際上都在它自己的進(jìn)程內(nèi)部運(yùn)行(準(zhǔn)確地說(shuō)峦阁,是greenlet),也就是我們通常說(shuō)的協(xié)程。這允許你在不使用帶回調(diào)函數(shù)的復(fù)雜代碼的情形下耘成,使用python寫出非常具有表現(xiàn)力的腳本榔昔。
目前Locust支持的版本有:
Python 2.7, 3.3, 3.4, 3.5, and 3.6
Locust的高階應(yīng)用之后再慢慢探索。So far so good.
比如瘪菌,查看多目錄的網(wǎng)頁(yè)撒会,查看需要登錄后才能操作的網(wǎng)頁(yè),分布式的壓測(cè)等师妙。
能在這么短的時(shí)間內(nèi)就搭建好一個(gè)壓測(cè)工具诵肛,果然很Pythonic,希望以下的幾位 小哥哥為代表的大神們更加努力默穴,我們能更早用上一個(gè)有良好報(bào)告的Locust怔檩。