cannot assign requested address
昨天遇到一個 cannot assign requested address
的問題,這個問題主要的意思是主機端找不到可用的 port 來發起請求, 例如: TCP 連線遇到大量的 TIME_WAIT, 昨天就是這個問題
因為使用的 golang request 套件是使用 golang 的 http client, 但沒有指定 MaxIdleConns
值, 造成大量的 TIME_WAIT
現象
最後設定成這樣來解決
_httpClient = &http.Client{
Transport: &http.Transport{
MaxIdleConnsPerHost: 100,
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
TLSClientConfig: &tls.Config{
InsecureSkipVerify: false,
},
},
}
References:
https://github.com/jasonsoft/request
http://holys.im/2016/11/23/time-wait-go-http/
http://tleyden.github.io/blog/2016/11/21/tuning-the-go-http-client-library-for-load-testing/