架构师训练第七周
发布于: 2020 年 07 月 22 日
当没有遇到性能瓶颈的时候,吞吐量与虚拟用户数之间存在一定的联系,可以采用以下公式计算:F=VU * R / T其中F为吞吐量,VU表示用户个数,R表示每个用户发出的请求数,T表示性能测试所用的时间,其实通过这个公式就能看出吞吐量与并发用户数之间的关系了。
package mainimport ( "fmt" "net/http" "time" "net" "encoding/json" "strings")var iCurSession intvar iWhileRequest intvar strWeb stringfunc httpclient(){ connTimeout := 2*time.Millisecond readTimeout := 3*time.Millisecond client := http.Client{ Transport: &http.Transport{ Dial: func(netw, addr string) (net.Conn, error) { c, err := net.DialTimeout("tcp4", addr, connTimeout) if err != nil { return nil, err } c.SetDeadline(time.Now().Add(readTimeout)) return c, nil }, }, } for i:=0; i<iCurSession; i++ { postParams := map[string]interface{}{"checksum": "1111111111111", "result": "penggetest"} bytebody, _ := json.Marshal(postParams) retbody := string(bytebody) req, err := http.NewRequest("POST", strWeb, strings.NewReader(retbody)) if err != nil { fmt.Println("new request err:", err) return } headers := make(map[string]string) for key, value := range headers { req.Header.Set(key, value) } resp, reqErr := client.Do(req) if reqErr != nil { fmt.Println(" client do err:", reqErr) return } defer resp.Body.Close() fmt.Println("code:", resp.StatusCode, "\nerr:", err) time.Sleep(2*time.Second) }}func main() { // 通过入参获取参数 // iCurSession iWhileRequest strWeb var iLoop int var ithread int = iWhileRequest/iCurSession var wg sync.WaitGroup for iLoop = 0; iLoop < ithread; iLoop++ { go httpclient() wg.Add(1) } wg.Wait() }
划线
评论
复制
发布于: 2020 年 07 月 22 日阅读数: 47
邵帅
关注
还未添加个人签名 2017.10.29 加入
还未添加个人简介
评论 (1 条评论)