隨著併發數增加http併發請求時間特別長

oohcode發表於2017-11-06

最近專案想用 beego 來做,實際測試中發現如果在業務處理中呼叫了 http.Get 包訪問外部資源,隨著併發數的增加,每個 request 的處理時間成倍的增長,用 http 原生包也存在這種問題,請問這個問題的具體原因以及該如何優化呢? 程式碼補充如下:

package main

import  (
    "net/http"
    "fmt"
    "sync"
    "time"
)

func  main() {
    mainStart := time.Now()
    //n := 10
    //n := 100
    n := 1000
    rsyncGet(n);
    mainEnd := time.Since(mainStart)
    fmt.Println("main cost", mainEnd.String())
}
func rsyncGet(n int) {
    var wg sync.WaitGroup
    for i := 0; i < n; i++ {
        wg.Add(1)
        go func() {
            defer wg.Done()
            get()
        }()
    }
    wg.Wait()
}

func get() {
    getStart := time.Now()
    resp, _ := http.Get ("http://www.baidu.com")
    defer resp.Body.Close()
    getEnd := time.Since(getStart)
    fmt.Println("get cost", getEnd.String())
}
更多原創文章乾貨分享,請關注公眾號
  • 隨著併發數增加http併發請求時間特別長
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章