![为什么我的生物钟总是差1.3秒?](https://linux22.com/image/718298/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E7%9A%84%E7%94%9F%E7%89%A9%E9%92%9F%E6%80%BB%E6%98%AF%E5%B7%AE1.3%E7%A7%92%EF%BC%9F.png)
我w32tm /stripchart /computer:time.windows.com
只是为了好玩而运行,发现我的时钟比这个时间服务器慢了 1.3 秒。并不是说我认为微软错了,而是我尝试使用我所在城市的其他各种时间服务器来消除潜在的网络延迟。结果相同。
解决这个问题的明显方法是强制重新同步,所以我运行了w32tm /resync
,但时间差仍然存在。
当我执行操作w32tm /query /status
以找出导致此问题的原因时,我震惊地发现,我的计算机的默认时间数据源Local CMOS Clock
显然从未与任何东西同步过!
我以为我已经弄清楚了发生了什么,并使用以下命令快速向我的同行添加了几个时间服务器:w32tm /config /manualpeerlist:ntp1.scc.kit.edu /syncfromflags:manual /reliable:yes /update
。
但即使再次重新同步后,时间差仍为 1.3 秒?出了什么问题?
答案1
事实证明 w32time 简直糟透了。微软承认
w32time 无法可靠地将同步时间维持在 1 到 2 秒的范围内。
很棒的软件,伙计们……
我安装了 Meinberg 公司提供的不同的 NTP 协议实现,这家公司确实知道它在做什么:NTP 下载
然后轰隆隆:我的时间差瞬间下降到只有几毫秒了。
23:43:23, d:+00.0135611s o:+00.6267124s
23:43:25, d:+00.0169653s o:+00.6379619s
23:43:28, d:+00.0145823s o:+00.0086838s <-- Exact moment the new NTP implementation was installed.
23:43:30, d:+00.0157926s o:-00.0037974s
答案2
https://github.com/MicrosoftDocs/windowsserverdocs/issues/2065#issuecomment-544785547
这就是您在 w32tm 中获取精确时间所需要做的事情。
因此,您至少需要 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServer time.google.com,0x5 time.cloudflare.com,0x1 以及另外 2 个(在您的国家/地区和您当地的 IX 或大学)https://gist.github.com/mutin-sa/eea1c396b1e610a2da1e5550d94b0453
答案3
w32tm 服务允许在 PC 和时间服务器的时间相差 1 秒的情况下同步时间。或者,您可以强制它在每次检查时始终与时间服务器同步,而不管时间差是多少。要检查的值是 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config 中的注册表项“MaxAllowedPhaseOffset”
要强制其始终同步,请将此值设置为 0。
但首先检查该值是否在您期望的值范围内。一些系统需要留出更多时差。另外,请注意w32tm 文档在发现需要时间同步后(即差异大于 MaxAllowedPhaseOffset),w32tm 将立即或逐渐改变时间。