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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

轉(zhuǎn)到 http.Get、并發(fā)和“對等方重置連接”

轉(zhuǎn)到 http.Get、并發(fā)和“對等方重置連接”

Go
慕勒3428872 2022-01-17 17:58:28
我有 1000-2000 個網(wǎng)頁要從一臺服務(wù)器下載,我正在使用 go 例程和通道來實現(xiàn)高效率。問題是每次我運行我的程序時,最多 400 個請求都會失敗,并出現(xiàn)錯誤“對等方重置連接”。很少(可能 10 次中有 1 次)沒有請求失敗。我能做些什么來防止這種情況發(fā)生?有趣的一件事是,當(dāng)我在與托管網(wǎng)站的服務(wù)器位于同一國家/地區(qū)的服務(wù)器上運行該程序時,0 個請求失敗,所以我猜測延遲存在一些問題(因為它現(xiàn)在運行在服務(wù)器在不同的大陸)。我使用的代碼基本上只是一個簡單的 http.Get(url) 請求,沒有額外的參數(shù)或自定義客戶端。
查看完整描述

3 回答

?
UYOU

TA貢獻1878條經(jīng)驗 獲得超4個贊

該消息connection reset by peer表明遠程服務(wù)器發(fā)送了一個RST強制關(guān)閉連接,或者是故意作為限制連接的機制,或者是由于缺乏資源。無論哪種方式,您都可能打開太多連接,或者重新連接太快。

并行啟動 1000-2000 個連接很少是下載這么多頁面的最有效方式,尤其是當(dāng)大部分或全部來自單個服務(wù)器時。如果您測試吞吐量,您會發(fā)現(xiàn)最佳并發(fā)級別要低得多。

您還需要設(shè)置Transport.MaxIdleConnsPerHost以匹配您的并發(fā)級別。如果MaxIdleConnsPerHost低于預(yù)期的并發(fā)連接數(shù),服務(wù)器連接通常會在請求后關(guān)閉,然后立即再次打開——這將顯著減慢您的進度,并可能達到服務(wù)器施加的連接限制。



查看完整回答
反對 回復(fù) 2022-01-17
?
12345678_0001

TA貢獻1802條經(jīng)驗 獲得超5個贊

仍然是一個golang新手,希望這會有所幫助。


var netClient = &http.Client{}


func init() {

    tr := &http.Transport{

        MaxIdleConns:       20,

        MaxIdleConnsPerHost:  20,

    }

    netClient = &http.Client{Transport: tr}

}


func foo() {

    resp, err := netClient.Get("http://www.example.com/")

}


查看完整回答
反對 回復(fù) 2022-01-17
?
森欄

TA貢獻1810條經(jīng)驗 獲得超5個贊

MaxConnsPerHost通過設(shè)置運輸選項,我得到了很好的結(jié)果......


cl := &http.Client{

    Transport: &http.Transport{MaxConnsPerHost: 50}

}

MaxConnsPerHost 可以選擇限制每個主機的連接總數(shù),包括處于撥號、活動和空閑狀態(tài)的連接。違反限制時,撥號將阻塞。


https://golang.org/pkg/net/http/#Transport.MaxConnsPerHost


編輯:為了澄清,這個選項是在 Go 1.11 中發(fā)布的,在上面@AG1 或@JimB 的答案時不可用,因此我發(fā)布了這個。


查看完整回答
反對 回復(fù) 2022-01-17
  • 3 回答
  • 0 關(guān)注
  • 197 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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