【locust】locust安裝與啓動

locust安裝

通過pip 安裝locust

pip install locustio

需要預先安裝python3和pip,這次在安裝環境時遇到一些坑,環境中原本使用的python2.6,需要重新安裝python3環境,這時候可以安裝一個虛擬環境

注:支持的python版本:2.7、3.4、3.5、3.6及以上

虛擬環境安裝

  1. 命令安裝了python的虛擬環境
pip3 install virtualenv
  1. 創建虛擬機環境
virtualenv /venv
  1. 激活虛擬環境
source /venv/bin/activate

進入了一個全新的python3的環境,你可以安裝獨立的python依賴了,安裝完成之後可以啓動程序運行

  1. 退出虛擬環境
deactivate

腳本示例

locust的腳本里,模擬負載的請求和python的requests庫使用方法基本一樣,示例如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: lluozh
# @Date  : 2020/4/16
# @Desc  :
from locust import HttpLocust,TaskSet,task,between

class MyBlogs(TaskSet):
    @task(1)
    def get_blog(self):
        header = {
        }
        body = {
            "roomId": "158589982254376"
        }

        req = self.client.get("/api/v1/model", headers=header, params=body, verify=False)
        # print(req.text)
        # if req.status_code == 200:
        #     print("success")
        # else:
        #     print("fails")

class websitUser(HttpLocust):
    task_set = MyBlogs
    # 設置用戶執行任務之間等待的上下限,單位秒
    wait_time = between(3, 6)
    # # 等同於上面wait_time,單位毫秒
    # min_wait = 3000
    # max_wait = 6000
    host = "http://benchmark-server.lluozh.com"

if __name__ == "__main__":
    import os
    # os.system("locust -f locusttest.py --master")
    os.system("locust -f locusttest.py --slave --master-host=10.200.0.219")

腳本說明:

  • 新建一個類MyBlogs(TaskSet),繼承TaskSet,該類下面寫需要請求的接口以及相關信息
  • self.client調用get和post方法,和requests一樣
  • @task裝飾該方法表示爲用戶行爲,括號裏面參數表示該行爲的執行權重:數值越大,執行頻率越高,不設置默認是1

WebsiteUser()類用於設置生成負載的基本屬性:

  • task_set:指向一個TaskSet類,TaskSet類定義了用戶的任務信息,該屬性爲必填
  • min_wait:模擬負載的任務之間執行時的最小等待時間,單位爲毫秒
  • max_wait:模擬負載的任務之間執行時的最大等待時間,單位爲毫秒
  • host:被測系統的host,當在終端中啓動locust時沒有指定–host參數時纔會用到
  • weight:同時運行多個Locust類時會用到,用於控制不同類型任務的執行權重。、

默認情況下,時間是在min_wait和max_wait之間隨機選擇,但是可以通過將wait_function設置爲任意函數來使用任何用戶定義的時間分佈

啓動Locust

1. 單機啓動

locust -f testscript/locusttest.py --host=http://benchmark-server.lluozh.com

2. 分佈式啓動
master:

locust -f testscript/locusttest.py --master --host=http://benchmark-server.lluozh.com

slave:

locust -f testscript/locusttest.py --slave --master-host=10.200.0.2190 --host=http://benchmark-server.lluozh.com

注:若在阿里雲環境時,需要使用內部ip

成功啓動提示

[2020-04-18 20:01:22,727] IMYalost/INFO/locust.main: Starting web monitor at *:8089
[2020-04-18 20:01:22,729] IMYalost/INFO/locust.main: Starting Locust 0.8 

8089是該服務啓動的端口號,如果是本地啓動,可以直接在瀏覽器輸入http://localhost:8089打開UI界面,如果是其他機器搭建locust服務,則輸入該機器的IP+端口即可

運行邏輯

測試開始後,每個虛擬用戶(Locust實例)的運行邏輯都會遵循如下規律:

  1. 先執行WebsiteTasks中的on_start(只執行一次),作爲初始化
  2. 從WebsiteTasks中隨機挑選(如果定義了任務間的權重關係,那麼就是按照權重關係隨機挑選)一個任務執行
  3. 根據Locust類中min_wait和max_wait定義的間隔時間範圍(如果TaskSet類中也定義了min_wait或者max_wait,以TaskSet中的優先),在時間範圍中隨機取一個值,休眠等待
    重複2~3步驟,直至測試任務終止。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章