我有一个测试程序,可以并行获取URL,但当我将并行数增加到约1040时,我开始收到lookup www.httpbin.org: no such host
错误。
经过一些谷歌搜索,我发现其他人说没有关闭响应将导致问题,但我使用了res.Body.Close()
关闭了响应。
这里的问题是什么?非常感谢。
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func get(url string) ([]byte, error) {
client := &http.Client{}
req, _ := http.NewRequest("GET", url, nil)
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return nil, err
}
bytes, read_err := ioutil.ReadAll(res.Body)
res.Body.Close()
fmt.Println(bytes)
return bytes, read_err
}
func main() {
for i := 0; i < 1040; i++ {
go get(fmt.Sprintf("http://www.httpbin.org/get?a=%d", i))
}
}