[Go] Golang http.Client请求程序遇到 Connection Reset by Peer 或 EOF 问题
Contents
Golang http.Client请求程序遇到Connection Reset by peer 或 EOF 问题
问题
线上服务经常规律性的出现http.Client请求服务器数据和上报数据时报Connection Reset by peer 和 EOF 错误,在测试环境一直没有出现过;
原因
原因是线上环境是通过lvs-ngin代理转发,存在并发连接数限制,当达到限制时服务器会关闭其中一些连接; 同时客户端请求存在连接复用,如果在收到关闭之前复用了连接就会出现Connection Reset by peer; EOF错误发生在请求建立后读取时,此时服务器已经关闭连接,客户端还没有检测到关闭前读取数据;
解决方案
在请求时关闭连接复用,每次都使用新的连接;
|
|
或者头部设置连接为关闭状态
|
|
使用 Transport 取消 HTTP利用连接 DisableKeepAlives 为true时,当前连接只会使用一次
|
|