once do, do it well

锦通  金牌会员 | 2023-4-11 22:10:34 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 930|帖子 930|积分 2790

昨天出现一个生产问题。我们的channel系统代码里,调用其中一个三方服务商的http接口时未设置超时时间。碰巧昨天出现一笔http请求持续数小时始终无响应,加之程序是单线程处理交易请求,就出现因为线程一直处于RUNNABLE状态而导致系统生产能力严重下降。
现在说这个结论很easy,而昨天排查这个问题却很是花费了许多周折。
那么,解决这个问题,自然是为这个服务商的http请求设置合理的超时时间。
组内的小伙很快fix了这段代码,为方法里的http请求设置了connectTimeout和socketTimeout。

 
 
 
发现问题,上来就解决,往往是低效的方式。
为什么这么说呢?
曾经我们系统化地调整过channel里的对外http连接的超时时间。而怎么单单遗漏了这个服务商呢?原来,查看代码才发现,是这个服务商并没有依赖我们的公共的http util类,而是单独写的http post方法,藏匿得比较深。
consequently,once do,do it well。通过review代码后,我改成了让这个服务商也调用公共的http util来实现http通信。

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

锦通

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表