Python 效能測試工具 locust 簡介
簡介:
locust 是Python實現的一個性能測試工具。
優點:
1. 易用。很方便地基於Python進行指令碼擴充套件和業務請求實現。
2. 完全基於事件驅動,所以不受程序和執行緒的限制,可以支援發起更高的併發數請求。
3. 可以分散式發起併發請求。
4. 開源。
缺點:
1. 圖表相對loadrunner 比較簡單。(在Linux 下部署時可以看到圖表,在Windows 下沒有)
2. 不支援監控被測機,需要結合nmon等工具輔助監控。
版本:
1. 最新版本 0.8a2 : 支援 Python 2.7, 3.3, 3.4, 3.5, and 3.6
2.注意之前的版本不支援Python3,所以安裝時請留意選擇對應版本。
參考文件:
安裝:
1. Python 下安裝:pip install locustio 或 pip install locust
2. 如需進行分散式壓測,還需要安裝pyzmq 模組:pip install pyzmq
3. 命令列中輸入 locust -V 檢查是否安裝成功以及版本是否正確:
安裝 2:
在 github 上下載最新版本的原始碼:
https://github.com/locustio/locust
下載到本地後,解壓,命令列進入對應目錄後,執行 python3 setup.py install 進行安裝。
指令碼例子:
locustfile.py
實現舉例1 :
實現舉例2:
以上兩種實現方式的效果是一樣的,區別在於後一種方式引入了 task 裝飾器來指定每個task 的執行比例,如果新增 task ,新增起來比較方便。
執行:
1. 單機執行:可以有以下3種啟動方式:
1.1 在命令列中進入locustfile.py 檔案所在目錄, 然後執行 locust :
1.2 指定具體指令碼:
locust -f 指定的指令碼,如下:
1.3 指定被測host 物件:如果指令碼中已指定了host,則啟動命令可以不需要host 引數
locust -f 指定的指令碼 --host=指定伺服器,如下:
啟動好後,瀏覽器進入 http://localhost:8089/
Number of users to simulate :併發使用者數
Hatch rate (users spawned/second): 每秒新增使用者數
例如分別輸入100 和 10 , 則從0開始,每秒新增10個新使用者進行併發。到達100個使用者時,持續進行併發測試,直至手動停止:
停止: 在啟動的命令列視窗按 ctrl +c 停止程序。
2. 分散式併發執行:
2.1 首先,需要在每臺機器上安裝locust,並確保測試指令碼已同步到每臺機器。
2.2 以其中一臺機器作為主機啟動(用以管理所有機器和發起請求):
在主機中執行以下命令(是否需要指定host 和 file視個人具體設定而定):
locust -f locust_files/my_locust_file.py --master --host=http://example.com
2.3 在其他機器中作為備機(slave)啟動:
locust --slave --master-host=localhost
其中 master-host 為已啟動的主機地址,如果是在同一臺機器(同一臺機器中以新的命令列視窗啟動),可以省略該引數:
locust --slave
此時在主機的管理頁面可以看到已連線的備機數量。
2.4 發起併發請求:
在管理頁面發起請求時,主機會將相關任務分配到對應的備機中執行,主機不負責發起請求。
注意:同一臺機器中既可以啟動一臺主機、多臺備機,也可以啟動多臺備機。
執行效果如下:
報表檢視:
(GitHub 上最新的程式碼才有chart模組,如需使用可下載最新原始碼進行安裝)
圖表可以簡單看到以下資訊:
total requests per second: 每秒發起的請求數
average response time:平均響應時間
number of users: 當前併發使用者數
檢視失敗資訊和異常:
可分別在 failures 標籤和 exception 標籤檢視到失敗和異常資訊:
執行結果可以在 download data 標籤點選下載對應表格:
鑑於locust 無法實時對被測機進行監控,建議結合 nmon 進行監控。具體使用方式請參考以下: