第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

撥號(hào)TCP報(bào)錯(cuò):高并發(fā)請(qǐng)求一段時(shí)間后超時(shí)或i/o超時(shí)

撥號(hào)TCP報(bào)錯(cuò):高并發(fā)請(qǐng)求一段時(shí)間后超時(shí)或i/o超時(shí)

Go
慕運(yùn)維8079593 2022-12-26 10:53:24
我最近在通過以下方式開發(fā)高并發(fā) http 客戶端時(shí)遇到了一個(gè)問題valyala/fasthttp:客戶端在前 15K~ 請(qǐng)求中工作正常,但之后越來越多dial tcp4 127.0.0.1:80: i/o timeout并dialing to the given TCP address timed out發(fā)生錯(cuò)誤。示例代碼var Finished = 0var Failed = 0var Success = 0func main() {    for i := 0; i < 1000; i++ {        go get()    }    start := time.Now().Unix()    for {        fmt.Printf("Rate: %.2f/s Success: %d, Failed: %d\n", float64(Success)/float64(time.Now().Unix()-start), Success, Failed)        time.Sleep(100 * time.Millisecond)    }}func get() {    ticker := time.NewTicker(time.Duration(100+rand.Intn(2900)) * time.Millisecond)    defer ticker.Stop()    client := &fasthttp.Client{        MaxConnsPerHost: 10000,    }    for {        req := &fasthttp.Request{}        req.SetRequestURI("http://127.0.0.1:80/require?number=10")        req.Header.SetMethod(fasthttp.MethodGet)        req.Header.SetConnectionClose()        res := &fasthttp.Response{}        err := client.DoTimeout(req, res, 5*time.Second)        if err != nil {            fmt.Println(err.Error())            Failed++        } else {            Success++        }        Finished++        client.CloseIdleConnections()        <-ticker.C    }}細(xì)節(jié)服務(wù)器建立在labstack/echo/v4客戶端出現(xiàn)超時(shí)錯(cuò)誤時(shí),服務(wù)器沒有任何錯(cuò)誤,通過Postman或類似瀏覽器的方式手動(dòng)執(zhí)行請(qǐng)求Chrome都可以正常工作。客戶端在第一個(gè) 15K~ 請(qǐng)求中運(yùn)行良好,但之后,出現(xiàn)越來越多的超時(shí)錯(cuò)誤并且輸出越來越少Rate。我搜索了google和github,發(fā)現(xiàn)這個(gè)問題可能是最合適的,但沒有找到解決方案。另一個(gè)小問題...正如您所看到的,當(dāng)客戶端啟動(dòng)時(shí),它首先會(huì)產(chǎn)生一些the server closed connection before returning the first response byte. Make sure the server returns 'Connection: close' response header before closing the connection錯(cuò)誤,然后正常工作直到大約 15K 問題,然后開始產(chǎn)生越來越多的超時(shí)錯(cuò)誤。為什么它會(huì)在開始時(shí)產(chǎn)生 Connection closed 錯(cuò)誤?機(jī)器信息配備 16GB Ram 并運(yùn)行 macOS Monterey 12.4 的 Macbook Pro 14 2021 (Apple M1 Pro)
查看完整描述

1 回答

?
呼啦一陣風(fēng)

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊

所以基本上,如果你試圖打開一個(gè)連接然后盡快關(guān)閉它,它不會(huì)像“連接#1 使用一個(gè)端口然后立即返回它”,需要做很多處理,所以如果你想同時(shí)發(fā)送很多請(qǐng)求,我認(rèn)為最好盡可能地重用連接。


例如,在fasthttp:


req := fasthttp.AcquireRequest()

res := fasthttp.AcquireResponse()

defer fasthttp.ReleaseRequest(req)

defer fasthttp.ReleaseResponse(res)


// Then do the request below


查看完整回答
反對(duì) 回復(fù) 2022-12-26
  • 1 回答
  • 0 關(guān)注
  • 801 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)