应用服务器和数据库时间不一致,以及不同应用服务器时间不一致的问题

问题描述
今天在生产上遇到一个这样的问题,通过某个功能配置参数,先弹出一个窗口,输入完成后,调用后台接口查询刚刚配置数据,结果出现了配置后的数据无法查询的问题,该问题出现频率很高,但是在测试环境又无法重现。配置的数据在经过一段时间后又可以查询的到,表现的形式具有延时性。

问题排查
开始认为是前端的问题,在没有等待第一个结果返回就调用查询接口,经过排查不是,又经过代码复查,发现在插入数据时,使用配置生效时间为应用服务器时间,但是查询时,查询的条件为生效时间在数据库系统时间之前的,而刚刚好两台应用服务器的某一台的时间比数据库快了12秒左右,就会应用数据插入后,如果在12秒内去查询,数据库时间还没有到,导致数据被过滤,而如果配置时请求分发到的是时间一致的服务器,则查询正确。后来发现还有类似的问题,比如都使用应用服务器时间作为查询条件时间时,经过快了12秒服务器插入的数据,如果通过该服务器查询,可以查到数据,而另外一台在12秒内没有数据,如果多次刷新,数据就时有时无。

解决方案
第一,通知运维同事,更新应用服务器时钟,统一使用同一时钟。第二,对时间要求敏感的数据,采用数据库时间作为时间戳,不通过应用服务器获取时间。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值