先把当时的情况摆出来。CentOS 7 上 timedatectl 显示 System clock synchronized: yes,NTP synchronized: yes,可和标准时间一比差四十秒,日志时间整体偏,定时任务也跟着错位。
原因不止一个,得分开看。chronyd 启动时只步进一次,之后靠逐渐 slewing 追,偏移大时要追很久。还有一种是配置里没写 makestep,chrony 拒绝大步调整时间。
还有一种情况,虚拟机的 kvm-clock 有漂移,宿主机自己没同步,客机跟着偏。
先看真实偏移与同步源
chronyc tracking; chronyc sources -v
允许超过一秒就步进校正
在 /etc/chrony.conf 写 makestep 1.0 3
立即强制校正一次
chronyc makestep
复核系统时间与状态
timedatectl; date -u
这次没动代码,只在配置和运行环境上找原因。
隔了一天再看,现象没变,说明不是偶发。
那几天正好在做别的变更,先把时间线对齐才敢动手。
别只看报错消失,验证要多做一步。chronyc tracking 里 System time 的 offset 降到 1 秒内、Last offset 接近 0,timedatectl 的 synchronized 为 yes 且 date 与标准时间差小于 1 秒。
synchronized yes 只说明在同步,不说明已经追上;makestep 对数据库类服务要慎重,跳变可能让事务时间戳异常。这类问题最好一次改到位,反复小改反而容易把原因搅混。
