Locust 登陸壓力測試
阿新 • • 發佈:2019-02-16
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指令碼多次啟動了。