locust2.0+教程:007 - 分布式壓測(cè)執(zhí)行

前言:
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)步,謝謝!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容