分散式 Master / Worker

概觀

LoadDensity 透過 start_test / prepare_envrunner_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 檔(不共享狀態)。