因为使用go的自带的net/http
库并结合http代理使用时会遇到too many open files
和too many open connections
这样的错误,致使没法建立新的链接,其缘由是没有释放已用过的链接,本文只是用来总结解决这个问题的设置服务器
组装http请求时设置访问完成时自动关闭链接,这样就不会让服务器和客户端一直保持链接,从而形成资源耗光了url
http_requ, _ := http.NewRequest(req.Method, dest_url, req.Body) http_requ.Header = req.Header //在头部设置使用以后关闭链接 http_requ.Header.Set("Connection", "close") //或者直接设置Close http_requ.Close = true
其余设置是看源代码中的注释瞎猜的代理
http_client := &http.Client{ Timeout: time.Duration(3 * time.Second),//客户端设置3秒超时 }
http_client.Transport = &http.Transport{ DisableKeepAlives: false,//关闭链接复用,由于后台链接过多最后会形成端口耗尽 MaxIdleConns: -1, //最大空闲链接数量 IdleConnTimeout: time.Duration(3 * time.Second), //空闲链接超时时间 Proxy: http.ProxyURL(proxy_addr), //设置http代理地址 }