本地(macOS)和服务器时间不同步导致的 Bug排查及解决
问题
今天在开发项目时发现:本地环境运行的项目偶尔会登录不了,提示token无效。
怪了,很久都没动过登录相关的模块了,环境也没动过,怎么会突然登录不了呢。
排查
于是我就去调试了一下登录的模块,发现在token校验里的有效期判断里,偶尔会出现token里的时间比Redis里存的时间大(正常应该是小于或等于的)。
进一步排查后发现我电脑的时间比服务器的时间慢了3秒左右导致的。
为什么是偶现,而不是必现呢?
由于我是本地代码连接线上的Redis服务,中间还有数据库查询,偶尔网络慢的时候刚好把这1秒多抹平了。
解决方法
- 进入系统设置-通用-日期与时间:
- 进入来源-设定:
- 设置
时间服务器
:
阿里时间服务器IP:182.92.12.11
服务器查看时间的命令:
date
date命令运行效果:
mac系统同步时间的命令:
# 以下命令需要输入密码
sudo sntp -sS 182.92.12.11
sntp命令运行效果:
进一步思考
为什么时间会突然就慢了呢?
我想起近期我的魔法IP不太稳定,切过几次IP源。
是不是新的IP无法访问苹果的时间服务器呢?
于是去验证了一下:
# 运行同步时间的命令
# time.apple.com是苹果原装时间服务器
sudo sntp -sS time.apple.com
果然超时了(Exchange failed: Timeout):
OK!破案!
福利
我发现有个网站可以很方便的检查电脑的时间是否和网络时间同步。
地址:
https://tools.manmankan.com/shijian/
对比网站中框红的两个时间,相等的话你本地时间是OK的,不等的话就要调整啦。
关注"大虫小呓"
(全网同名),第一时间获得更多技术干货。
这一篇就先水到这啦!下期见!