分散式 Master / Worker
概觀
LoadDensity 透過 start_test / prepare_env 的 runner_mode 參數開放 Locust 的分散式 runner。三種模式:
local— 單一程序(預設)。master— 協調 worker 群,可選擇啟動 Locust Web UI。worker— 加入 master 並執行指定的 user count。
Master
from je_load_density import start_test
start_test(
user_detail_dict={"user": "fast_http_user"},
runner_mode="master",
master_bind_host="0.0.0.0",
master_bind_port=5557,
expected_workers=4, # 等待 4 個 worker
web_ui_dict={"host": "0.0.0.0", "port": 8089},
user_count=400,
spawn_rate=40,
test_time=600,
tasks=[...],
)
Master 在開始 ramp 前最多等待 60 秒,等待 expected_workers 個 worker 加入。若僅 N(N < expected)人加入,會記錄警告並照常啟動。
Worker
於每個壓測節點執行:
start_test(
user_detail_dict={"user": "fast_http_user"},
runner_mode="worker",
master_host="10.0.0.10",
master_port=5557,
tasks=[...],
)
Worker 不啟動 Web UI 並跳過本地 stats greenlet — 由 master 集中收集與發佈整體統計。
提示
在防火牆開啟 master 的
master_bind_port。Locust 預設埠5557。僅在 master 對 worker 可達時用
master_bind_host="0.0.0.0";否則綁定私網 IP。Master 與 worker 的 user 模板(
http_user/fast_http_user/ …)需一致 — master 廣播 user class 名稱。若用
${csv.X.col}參數化 task,每個 worker 都需註冊相同 CSV 檔(不共享狀態)。