本文首发于我的公众号 [发现问题就解决,是低效的方式,得探究根源]、【100年前的纽约街头,市民以马车为出行工具,问题来了】
我们支付系统有个定时任务,就是将系统里所有付款中的交易,调用第三方银行查单接口,然后持久化更新付款状态。
许多同学都做过类似的定时调度程序吧。
近期,许多“http超时”方面的系统告警与这个定时任务有关。分析这个定时任务执行的log,出现好多调用三方银行接口http连接超时的现象。
怎么办?必然是一方面与银行方反馈沟通,另一方面得看http请求工具类,分析代码,排查原因。例如:finally里关闭释放连接,控制connect timeout,连接复用,排查网络,等。
最终解决后,超时问题得到控制。不过,根治这个问题的解决办法是——查询本地数据加了时间条件限制。
就是说,定时任务从DB里查询的是所有付款中的交易,包括一个月前的、半年前的、上个世纪的。而实际业务中,这些过期的单子算是废单了,这里无需再查银行通道。而这个定时任务真正要关注的,是查询近期的付款中的交易(具体多久结合实际交易周期评估一个阈值,例如2天即可)。
【后记】
1)发现问题就解决,是低效的方式,得沉下来一步步探究根源,找到症结所在,从根源处解决问题,才能有效的方式。
2)100年前的纽约,市民以马车为出行工具,一度是贵族高贵的象征。这个时期,城市环境问题越发明显,街头马粪到处都是,尽管有清洁工和各种清洁技术。这成了苦恼市政的头等大事。后来,随着工业革命和科技的发展,汽车诞生了,逐步改变了人们的认知,得到人们的认可。所以,解决这个马粪问题的不是清洁工,而是汽车取代了马车。
【定时任务开发规范】
定时任务开发注意要点:
待补充
标签:清洁工,查询,----,任务,100,超时,定时 From: https://www.cnblogs.com/buguge/p/17626953.html