3 回答

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ù)器施加的連接限制。

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/")
}

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ā)布了這個。
- 3 回答
- 0 關(guān)注
- 197 瀏覽
添加回答
舉報