go:go结合python的locust,进行http性能测试
本文是go语言和python的locust结合起来,短时间内对http进行性能测试,产生大量负载(其实就是一个负载生成器)
前提:
go version===>go1.14.6
python===>3.7.0
locust===>0.14.6
工具boomer:github.com/myzhan/boomer
代码:
locust:只是用来开启一个locust,作为master
test.py
1 from locust import TaskSet,Locust 2 3 class test(TaskSet): 4 5 def test1(self): 6 pass 7 8 class myTest(Locust): 9 task_set=test
go:用来产生负载,作为slave
httptest.go
package main import( "fmt" "net/http" "time" ) func do_post(){ start:=time.Now() // ...省略发http请求的代码。因为代码较多,内网无法复制到外网~ end:=time.Since(start) if 200 == req.StatusCode{ boomer.RecodeSuccess("http","do_post",end.Nanoseconds()/int64(time.Millisecond),int64(10)) }else{ boomer.RecoderFailure(...) } } func main(){ task1:=&boomer.Task{ Weight:100 Fn:do_post Name:"do_post" } boomer.Run(task1) }
执行:
开启master:locust --master -f test.py --web-host="127.0.0.1"
开启slave:go run httptest.go --master-host=127.0.0.1 --master-port=5557
执行后就可以看到slave连接到了locust,可进行测试,短时间内产生大量负载。web页面输入127.0.0.1:8089,第三行的url无需输入