软件吧
登录注册账号
/posts/ntp-w32tm-resync
电脑必备

主控机和被控机时间差半秒,远程脚本校验总失败,我一路查到主板晶振

极客阿凯 100 0 13

上周给几台远程机器跑部署脚本,校验阶段一直报哈希不匹配。一开始我以为是网络传输把文件搞坏了,但同一份包在本地跑完全没问题。

先别急着甩锅给网络。 我把两台机器的时间戳打出来对比,发现主控机和被控机差了将近 0.5 秒。脚本里用了时间戳做签名,时间差一超阈值就直接判失败。问题是,这两台机器明明都开了 NTP 同步。

于是我拿四台同配置机器做对照:

  • A 机:默认 NTP 配置,同步间隔 1024 秒,偏差约 0.4s
  • B 机:手动把同步间隔改成 64 秒,偏差降到 0.05s 以内
  • C 机:干脆关掉自动同步,只在校验前手动 w32tm /resync,偏差稳定在 0.01s
  • D 机:换了一块带温补晶振的板子,一个月漂移不到 1 秒

结论很清楚:问题不在脚本,在时钟源精度和同步策略。默认的 NTP 轮询间隔对时间敏感型校验来说太松了,尤其被控机负载一高,系统调度延迟叠加上去,偏差就会被放大。

我的处理办法:

  1. 把对时间敏感的机器调成短间隔同步,但别太激进,64 秒是个比较稳的值,再短反而增加 NTP 请求开销。
  2. 校验逻辑里加一个时钟偏差预检,超阈值直接告警而不是静默失败,省得下次再从头查。
  3. 长期跑的机器记一下漂移曲线,漂移突然变大的基本是晶振老化或者主板供电不稳,该换就换。

顺带说一句,这种底层排查手动做一遍心里才有数。自动优化工具能帮你把 NTP 服务拉起来、把常见配置项摆平,适合不想折腾的人;但真到对账这一步,还是得自己把每台机器的时间戳打出来看。软领免费版我留着当巡检用,无广告这点确实省心,不会弹窗打断我盯日志。

现在的问题是:你们那边对时间敏感的批量任务,NTP 同步间隔一般设多少?有没有遇到过负载一高时钟就飘的情况,最后是怎么定位到具体机器的?

登录后可以为帖子点赞,但本帖内容对所有人开放阅读。

社区回应

0 Replies

还没有回应,抢一个沙发。

登录后可以回应和点赞,但本帖内容对所有人开放阅读。