魔改 Locust:不寫程式碼,可以輕鬆構建簡單的 http 介面壓力測試

JoyMao發表於2020-08-31

github:https://github.com/mao303mao/locust-hazard

基本說明

基於locust和boomer核心,使用基於etcd做為壓測機服務發現,使用gRPC推送http請求事務描述資訊,讓壓測機自己構造http介面測試任務。
使用postman類似的節目管理http請求事務描述資訊。
只要啟動master端,提供給他人web頁面,其他任何人如果想要利用自己的環境進行壓力測試的話,他只要去下載壓測機管理頁面上的可執行程式,執行頁面提示的命令就可以變成壓測機了(注,html上的etcd的地址ip要改成你實際部署的ip)
目前是核心且基本框架及功能的完成,如有更多的要求比如任務隔離,執行歷史管理......這就是你的事了。

說明

拷貝了原版locust的main.py及webUI和前端部分程式碼進行修改。
在boomer之上增加了gRPC服務,能解析master發來的http介面測試任務描述資訊並生成boomer的任務
boomer及grequests原始碼部分地方做了小改動--主要避免異常退出--如果work端編譯失敗,請將錯的地方(主要是grequests配置連線數上限的地方)刪除即可

啟動參考:這裡的ip、port都是例子,請根據實際情況設定

### 1-先下載etcd並啟動etcd:etcd.exe --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379
etcd下載地址: https://github.com/etcd-io/etcd/releases/download/v3.3.25/etcd-v3.3.25-windows-amd64.zip

### 2-在服務上啟動matser(假定伺服器ip:192.168.23.222):python3 main.py --master-host=192.168.23.222
### 3-可以直接從web頁面的壓測機管理下載編譯好的exe(在/master/slaveEXE下面),或者編譯壓測機(worker)端應用程式:go build boomerHazardServer
### 4-壓測機端執行此程式(假定etcd的ip:192.168.23.222):boomerHazardServer.exe -EtcdAddr 192.168.23.222:2379 [-Host 壓測機ip] [-Port 3000]
### 5-其他操作與原版一致

based open source project

## golang
"github.com/levigross/grequests"
"github.com/myzhan/boomer"
"go.etcd.io/etcd/v3/clientv3"
"golang.org/x/net/context"
"google.golang.org/grpc"
## python
pip安裝:
pip install grpcio
pip install grpcio-tools
pip install etcd3
pip install locust==1.1.1
## 前端
layui

部分程式碼摘抄和參考了網路上的文章,致謝

go-etcd-grpc :"https://www.cnblogs.com/wujuntian/p/12838041.html"

相關文章