1. 程式人生 > >Locust 登陸壓力測試

Locust 登陸壓力測試

debugtalk 大大很早就在國內給大家介紹過locust. 在他的博文裡有講解有例子。真正實用得自己在專案中還得靠自己靈活應用。

http://debugtalk.com/post/head-first-locust-advanced-script/

1. 按照locust.io官網推薦的專案結構。如下圖


locust的子類httplocust底層用的是requests. 因此做API效能測試需要最好對rest API有些基礎知識。

2. 登陸例子

from locust import HttpLocust, TaskSet, task
from random import randint
from locust.clients import HttpSession
import json

# Web效能測試
class UserBehavior(TaskSet):
    @task
    def login(self):
        self.head = {'Content-Type': 'application/json;charset=utf-8',
                     'token': 'planceholder',
                     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
                     'userId': 'planceholder'
                     }

        self.form_data = {'account': 'admin',
                          'password': 'zs123YL!'}

        with self.client.post("/api/chameleon-user/user/login", headers = self.head, data = json.dumps(self.form_data)) as response:
            print(response.status_code)
            print(response.content)

class User(HttpLocust):
    task_set = UserBehavior
    min_wait = 1000
    max_wait = 3000
    host = "http://172.16.78.73:3011"

3. 指令碼執行

import os
os.system('locust -f locustfiles\op_parameter.py')

4. 指定壓力使用者數和使用者產生的速度。

5. 開始加壓後,就可以看到網頁API的響應成功,響應時間,和請求速率等效能引數了。


6. locust 支援master 和slave叢集,讓locust支援百萬級使用者壓力測試。

個在應用locust的時候踩過的坑,

1. 啟動locust web interface 報告訪問拒絕, 換成http://localhost:8089就OK了。 


2. 執行locust指令碼報套接字地址只允許使用一次。原因是同一個locust指令碼多次啟動了。