wechatpay-go
wechatpay-go copied to clipboard
常态化低概率一直发生的接口HTTP POST时EOF问题,有一点疑问
服务器较大负载调用转账到零钱接口给客户发促销小额现金奖励 每分钟几十次的频率 长期稳定运行后, 调用这个接口一直有千分之一到百分之二之间的概率,直接HTTP POST时报EOF 网络高峰和网络平峰时都有
{"error": "Post \"https://api.mch.weixin.qq.com/v3/transfer/batches\": EOF"}
非golang开发的平台调用此类接口就没见过这种错误,同期同网络基本都是100%的接口可用性
通过检索, 大部分这类故障都提到是Http keep-alive的问题, 通过显示配置http client关闭keep-alive即可
在stackoverflow上 大家同时说这个问题是早期golang版本的问题, 到golang1.8就修复了
问下大佬们对这类问题是否有头绪?是否在现在golang 1.18的情况下还需要显示关闭keep-alive?
没有遇到类似问题,请问是 httpClient.Do 返回的 err ?
能贴下调用的上下文代码吗?
近期俺也遇到了类似的问题,翻阅到了 https://github.com/golang/go/issues/22158 ,记得此issue,特来此备注下解题思路:
判断当前client使用的http(s)Agent,是否重用了socket(请翻golang文档应该有方法及描述),并且判断当前angent 抛的异常是不是 ECONNRESET,在此场景下,丢弃之前的socket并新建链接重试一下;
另外:API服务端响应其实是要显式返回keep-alive: timeout= 头,告知客户端,此alive socket 链接多久会被服务端咔嚓...
服务器较大负载调用转账到零钱接口给客户发促销小额现金奖励 每分钟几十次的频率 长期稳定运行后, 调用这个接口一直有千分之一到百分之二之间的概率,直接HTTP POST时报EOF 网络高峰和网络平峰时都有
{"error": "Post \"https://api.mch.weixin.qq.com/v3/transfer/batches\": EOF"}非golang开发的平台调用此类接口就没见过这种错误,同期同网络基本都是100%的接口可用性
通过检索, 大部分这类故障都提到是Http keep-alive的问题, 通过显示配置http client关闭keep-alive即可
在stackoverflow上 大家同时说这个问题是早期golang版本的问题, 到golang1.8就修复了
问下大佬们对这类问题是否有头绪?是否在现在golang 1.18的情况下还需要显示关闭keep-alive? 我也遇到了这个问题,你解决了吗