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/