定时任务查询通道狂暴超时,原因竟然是取数据不当----清扫100年前纽约街头马粪的不是清洁工,而是汽车

发布时间 2023-08-13 18:20:32作者: buguge

本文首发于我的公众号 [发现问题就解决,是低效的方式,得探究根源]、【100年前的纽约街头,市民以马车为出行工具,问题来了

 

我们支付系统有个定时任务,就是将系统里所有付款中的交易,调用第三方银行查单接口,然后持久化更新付款状态。

 

许多同学都做过类似的定时调度程序吧。

 

近期,许多“http超时”方面的系统告警与这个定时任务有关。分析这个定时任务执行的log,出现好多调用三方银行接口http连接超时的现象。

 

怎么办?必然是一方面与银行方反馈沟通,另一方面得看http请求工具类,分析代码,排查原因。例如:finally里关闭释放连接,控制connect timeout,连接复用,排查网络,等。

 

最终解决后,超时问题得到控制。不过,根治这个问题的解决办法是——查询本地数据加了时间条件限制。

 

就是说,定时任务从DB里查询的是所有付款中的交易,包括一个月前的、半年前的、上个世纪的。而实际业务中,这些过期的单子算是废单了,这里无需再查银行通道。而这个定时任务真正要关注的,是查询近期的付款中的交易(具体多久结合实际交易周期评估一个阈值,例如2天即可)。

 

【后记】

1)发现问题就解决,是低效的方式,得沉下来一步步探究根源,找到症结所在,从根源处解决问题,才能有效的方式。

2)100年前的纽约,市民以马车为出行工具,一度是贵族高贵的象征。这个时期,城市环境问题越发明显,街头马粪到处都是,尽管有清洁工和各种清洁技术。这成了苦恼市政的头等大事。后来,随着工业革命和科技的发展,汽车诞生了,逐步改变了人们的认知,得到人们的认可。所以,解决这个马粪问题的不是清洁工,而是汽车取代了马车。

 

【定时任务开发规范】

定时任务开发注意要点:

待补充