1. 程式人生 > 實用技巧 >go:go結合python的locust,進行http效能測試

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

開啟slave:go run httptest.go --master-host=127.0.0.1 --master-port=5557

執行後就可以看到slave連線到了locust,可進行測試,短時間內產生大量負載。

內網沒法貼圖上來,沒法複製程式碼,一句句寫太不容易了