golang管理http代理

說明

因爲使用go的自帶的net/http庫並結合http代理使用時會遇到too many open filestoo 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代理地址
}
相關文章
相關標籤/搜索