Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

常态化低概率一直发生的接口HTTP POST时EOF问题,有一点疑问 #158

Open
realpg opened this issue Dec 22, 2022 · 3 comments
Open

Comments

@realpg
Copy link

realpg commented Dec 22, 2022

服务器较大负载调用转账到零钱接口给客户发促销小额现金奖励
每分钟几十次的频率
长期稳定运行后, 调用这个接口一直有千分之一到百分之二之间的概率,直接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?

@xy-peng
Copy link
Contributor

xy-peng commented Dec 28, 2022

没有遇到类似问题,请问是 httpClient.Do 返回的 err ?

能贴下调用的上下文代码吗?

@TheNorthMemory
Copy link

近期俺也遇到了类似的问题,翻阅到了 golang/go#22158 ,记得此issue,特来此备注下解题思路:

判断当前client使用的http(s)Agent,是否重用了socket(请翻golang文档应该有方法及描述),并且判断当前angent 抛的异常是不是 ECONNRESET,在此场景下,丢弃之前的socket并新建链接重试一下;

另外:API服务端响应其实是要显式返回keep-alive: timeout= 头,告知客户端,此alive socket 链接多久会被服务端咔嚓...

@maxomnis
Copy link

服务器较大负载调用转账到零钱接口给客户发促销小额现金奖励 每分钟几十次的频率 长期稳定运行后, 调用这个接口一直有千分之一到百分之二之间的概率,直接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?
我也遇到了这个问题,你解决了吗

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants