go语言作为一个新兴的语言,最活跃的地方莫过于服务器领域了,但是在最近的项目中,我却遇到一个烦心的事情,那就是服务器运行时间长了后会出现403错误,经过排查,原来是go无论是http server还是作为http client都是默认为长连接,如果连接过多,就会照成服务器拒绝服务的问题。下面我来讲讲如何设置go的server与client关闭长连接。
客户端:
将
client := &http.Client{}
改为
tr := &http.Transport{ DisableKeepAlives: true, } client := &http.Client{ Transport:tr, }
服务器端:
将
http.ListenAndServe(":80", nil)
改为
server := &http.Server{ Addr: ":80", Handler: nil, } server.SetKeepAlivesEnabled(false) err := server.ListenAndServe()