前言:
locust2.0+教程:001 - 安裝和目錄結(jié)構(gòu)
locust2.0+教程:002 - 快速使用
locust2.0+教程:003 - headless無界面模式
locust2.0+教程:004 - 等待時(shí)間和執(zhí)行權(quán)重
locust2.0+教程:005 - on_start和on_stop
locust2.0+教程:006 - @tag標(biāo)簽裝飾器
簡介:單臺(tái)機(jī)器不夠模擬足夠多的用戶時(shí),locust支持運(yùn)行在多臺(tái)機(jī)器中進(jìn)行壓力測(cè)試。master 模式中使用--master標(biāo)記來啟用一個(gè) Locust 實(shí)例。這個(gè)實(shí)例將會(huì)運(yùn)行你啟動(dòng)測(cè)試的 Locust 交互網(wǎng)站并查看實(shí)時(shí)統(tǒng)計(jì)數(shù)據(jù)。master 節(jié)點(diǎn)的機(jī)器自身不會(huì)模擬任何用戶。必須使用 --worker 標(biāo)記啟動(dòng)一臺(tái)到多臺(tái) LocustWoker 機(jī)器節(jié)點(diǎn),與標(biāo)記 --master-host 一起使用(指出master機(jī)器的IP/hostName)。
常用的做法是在一臺(tái)獨(dú)立的機(jī)器中運(yùn)行master,在woker機(jī)器中每個(gè)處理器內(nèi)核運(yùn)行一個(gè)woker實(shí)例。
注意:master 和 worker 之間必須是同一個(gè)局域網(wǎng),并且locust版本一致,同時(shí)需要包含一樣的locust 的測(cè)試文件。master 和每一臺(tái) woker 機(jī)器,在運(yùn)行分布式測(cè)試時(shí)都必須要有 locust 的測(cè)試文件。
例如:
源碼locust 的測(cè)試文件:
from locust import HttpUser, between, tag, task
class QuickstartUser(HttpUser):
wait_time = between(1, 2)
@tag("tag1")
@task
def hello(self):
self.client.get("/hello")
@tag("tag2")
@task
def new(self):
self.client.get("/new")
@tag("tag3")
@task
def world(self):
self.client.get("/world")
if __name__ == '__main__':
import os
os.system("locust -f my_locust.py --web-host=172.23.32.1")
服務(wù)端sanic源碼:main.py
from sanic import Sanic
import datetime
from sanic import response
app = Sanic('myapp')
@app.get('/hello')
def hello(request):
time = str(datetime.datetime.now())[:-7]
return response.json({"hello time": time})
@app.get('/new')
def new(request):
time = str(datetime.datetime.now())[:-7]
return response.json({"new time": time})
@app.get('/world')
def world(request):
time = str(datetime.datetime.now())[:-7]
return response.json({"world time": time})
if __name__ == "__main__":
app.run(host="10.0.8.9", port=8000, auto_reload=True)
啟動(dòng)master節(jié)點(diǎn):注意這里的ip使用內(nèi)網(wǎng)ip即可。
locust -f my_locust.py --master --web-host=172.23.32.1
啟動(dòng)worker:
locust -f my_locust.py --worker --master-host=172.23.32.1
啟動(dòng)worker后,每新增一個(gè),web界面都會(huì)累加一個(gè)worker:
web執(zhí)行壓測(cè)腳本的情況:
服務(wù)端sanic的響應(yīng)情況:
再次強(qiáng)調(diào):
1、master 節(jié)點(diǎn)的機(jī)器自身不會(huì)模擬任何用戶。
2、master 和 worker 之間必須是同一個(gè)局域網(wǎng)。
3、master 和 worker 安裝的 locust 版本要一致。
4、同時(shí)需要包含一樣的locust 的測(cè)試文件。
微信公眾號(hào):玩轉(zhuǎn)測(cè)試開發(fā)
歡迎關(guān)注,共同進(jìn)步,謝謝!