Golang写了一个小程序抓信息然后发送一个HTTP请求到指定的服务器
http.Get("/someapi")
服务运行了大概三天,发现有多处错误日志打印,并且转发没有工作
xxx dial tcp x.x.x.x:8070: socket: too many open files
判断了半天,发现是因为http创建的请求没有Close,导致连接数量过多,不能继续创建新的socket连接,解决方法很简单,在所有的请求都要Close
res, err := http.Get("/someapi")
if err != nil {
panic(err)
}
// 这句话很重要,就算你不需要响应数据,也需要总是关闭
defer res.Body.Close()
res.Close = true
...