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()