我正在尝试使用该net/http包在 Go 中编写服务器。我只有一条路线,而且很简单。它从 S3 下载一个文件并将其返回给客户端:
response, err := http.Get("some S3 url")
if err != nil {
return
}
body, err := ioutil.ReadAll(response.Body)
w.Write(body)
自己下载 url 大约需要 0.25 秒。所以我启动这个服务器并发送 250 个请求/秒。最初我在 0.25 秒内得到回复。但是这个数字一直在上升,直到开始需要 45 秒才能做出响应。我在一台 40 核机器上运行它,使用GOMAXPROCS=40. 我开始想知道下载是否不会并行发生。
但如果我注释掉这一行:
body, err := ioutil.ReadAll(response.Body)
并且只返回一些等长的垃圾数据,突然我的服务器在 0.25 秒内始终响应。为什么删除后速度更快ReadAll?
HUH函数
相关分类