码迷,mamicode.com
首页 > Web开发 > 详细

golang http.client 遇到了 Connection reset by peer 问题

时间:2019-02-28 18:20:43      阅读:547      评论:0      收藏:0      [点我收藏+]

标签:server   远程服务器   csdn   远程服务   连接状态   参考   sdn   erro   ddr   

最近一个 golang 写的 http.client 的,获取远程服务器数据,有时候会报错,尤其在数量很大的时候,老是收到 Connection reset by peer 这样的 提醒,都有点想用重试机制

 

百度,goolge 了一翻后,说的是 它会阻止连接被重用,可以有效的防止这个问题,也就是Http的短连接

1.在客户端关闭 http 连接

func main() {
    req, err := http.NewRequest("GET", "http://localhost",nil )
    if err != nil {
        log.Errorf("")
    }
    req.Close = true
    resp, err := http.Client.Do(req)
    ...
}

  

  1. 在头部设置连接状态为关闭
    func main() {
        req, err := http.NewRequest("GET", "http://localhost",nil )
        if err != nil {
            log.Errorf("")
        }
        req.Header.Add("Connection", "close")
        resp, err := http.Client.Do(req)
        ...
    }
    
    1. 使用 Transport 取消 HTTP利用连接
      func main() {
          tr := http.Transport{DisableKeepAlives: true}
          client := http.Client{Transport: &tr}
      
          resp, err := client.Get("https://golang.google.cn/")
          if resp != nil {
              defer resp.Body.Close()
          }
          checkError(err)
      
          fmt.Println(resp.StatusCode)    // 200
      
          body, err := ioutil.ReadAll(resp.Body)
          checkError(err)
      
          fmt.Println(len(string(body)))
      }
      

        

      服务器端设置短连接

    2. func main(){
          server := &http.Server{
      		Handler:handle,
      		ReadTimeout:  20 * time.Second,
      		WriteTimeout: 20 * time.Second,
      	}
      	listen, err := net.Listen("tcp4",s.addr)
      	if err != nil  {
      		logger.Errorf("Failed to listen,err:%s",err.Error())
      		panic(err)
      	}
      	server.SetKeepAlivesEnabled(false)
      	err = server.Serve(listen)
      }
      

        

    参考 了

  2. https://blog.csdn.net/cyberspecter/article/details/83308348  

  3. https://my.oschina.net/shou1156226/blog/808613

golang http.client 遇到了 Connection reset by peer 问题

标签:server   远程服务器   csdn   远程服务   连接状态   参考   sdn   erro   ddr   

原文地址:https://www.cnblogs.com/jackluo/p/10452026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!