CentOS7迁移到TencentOS3.3 引发程序报错“Clock moved backwards. Refusing to generate id“

发布于:2025-07-08 ⋅ 阅读:(21) ⋅ 点赞:(0)

一、 背景
某个客户为满足信创条件,特将CentOS 7.X的版本迁移到TencentOS 3.3 的操作系统上。

采用的数据库是TDSQL 3.3 集中式版本。

TencentOS 2.4-3.3 系列主要是为了解决CentOS 7.9 后版本停服而引发的安全、升级等相关问题而衍生出的满足信创的操作系统,在腾讯历经数十年的打磨。

二、 问题的产生与排查

  1. “Clock moved backwards. Refusing to generate id” 该问题由系统时间变慢导致。
  2. 默认配置了腾讯时钟服务器同步,采用chrony的工具进行的同步。
  3. chrony 启动中。
  4. 应用程序兼容chrony。手动强制同步时间后,应用程序正常。

上面四点已经很明显,就是出在系统时间变慢上。
三、系统POC 测试验证
在这里插入图片描述
在这里插入图片描述
说明:按照上面的两幅图可以看出,chrony 是正在运行的状态,但是Leap status : Not synchronised 处于未同步状态。

# 查看已同步的客户端
chronyc clients
# 立即同步时间
chronyc makestep  
# 检查偏移量(Offset接近0)
chronyc tracking    
# 查看源状态(^*^表示当前同步源)
chronyc sources -v   

解决方案:
第一:通过调整参数
cat /etc/chrony.conf
server x.x.x.x iburst minpoll 5 maxpoll 5
参数解释:
minpoll:最小获取时间同步为2 的5次方,也就是32秒
maxpoll:最大获取时间同步为2 的5次方,也就是32秒

重启chrony.cnf 服务
systemctl restart chronyd

第二:配置crontab 任务

          • chronyc makestep
          • sleep 30; chronyc makestep

第三:配置本地chrony 时钟服务器,解决网络问题
服务端

vi /etc/chrony.conf
# 添加本地时钟源(无外网时作为时间源)
server 127.127.1.0 iburst
# 允许客户端网段访问
allow X.X.X.0/24
# 启用本地时钟层级(仅服务器端配置)
local stratum 10
logchange 0.5
Rtcsync
logdir /var/log/chrony
driftfile /var/lib/chrony/drift
makestep 1.0 3
#注释掉,无法使用chronyc clients 
#Noclientlog
#启动服务
systemctl restart chronyd

客户端

vi /etc/chrony.conf
# 指向时间服务器IP
server X.X.X.X iburst

#启动服务
systemctl restart chronyd
# 立即同步时间
chronyc makestep  


网站公告

今日签到

点亮在社区的每一天
去签到