Locust效能測試
阿新 • • 發佈:2019-02-07
:背景:最近EN5專案中web簽到抽獎,在大併發的情況下,出現問題,之前同事也分享了這個,試下介面併發
1、編寫效能測試指令碼
#coding=utf-8
from locust import HttpLocust,TaskSet,task
class UserBehavior(TaskSet):
@task(1)
def baidu(self):
self.client.get('/')
class Test(HttpLocust):
task_set = UserBehavior
host = "http://baidu.com"
min_wait = 3000
max_wait = 6000
1)HttpLocust類
HttpLocust類:用於設定效能測試
- task_set:指向一個定義的使用者行為類TaskSet
- min_wait/max_wait :執行事務之間使用者等待時間的下/上界(單位:毫秒)
- host:提供 URL 字首的預設值
- stop_timeout:超時秒數
- weight:被挑選執行的權重,數值越大,執行頻率越高
2)TaskSet類
TaskSet類:定義每個使用者的任務集合
- on_start():定義每個Locust使用者開始做的第一件事
- @task():裝飾的方法為一個事務,引數用於指定該行為的執行權重,引數越大每次被虛擬使用者執行的概率越高
- interrupt(reschedule=True):True時,從被巢狀任務出來馬上選擇新任務執行;False,從被巢狀任務出來後,隨機等待min_wait和max_wait之間的一段時間,再選擇新任務執行
- tasks = {stay:2}:每個使用者執行 stay 的頻率是2倍
2、執行效能測試
1)啟動效能測試:locust -f .py全路徑 –host -host名
- -f:指定效能指令碼檔案
- -host:指定被測試應用的URL地址
- Number of users to simulate:設定模擬使用者數
- Hatch rate (users spawned/second):每秒啟動的虛擬使用者數
3)點選Start swarming,執行效能測試
- Type:請求的型別
- Name:請求的路徑
- request:當前請求的數量
- fails:當前請求失敗的數量
- Median:中間值,單位毫秒,一半的伺服器響應時間低於該值,而另一半高於該值
- Average:平均值,單位毫秒,所有請求的平均響應時間
- Min:請求的最小伺服器響應時間,單位毫秒
- Max:請求的最大伺服器響應時間,單位毫秒
- Content Size:單個請求的大小,單位位元組
- reqs/sec:是每秒鐘請求的個數