当 SpecialPollInterval 用作轮询间隔时,如果服务进入峰值状态,则 Windows 时间服务不会更正时间

本文提供了 Windows 时间服务在服务进入峰值状态时未更正时间的问题的解决方法。

原始 KB 数: 2638243

现象

运行 Windows Server 版本或 Windows 客户端版本的 NTP 客户端计算机在满足以下条件时可能无法更正时间:

  • NTP 客户端将其时间与手动指定的 NTP 服务器同步。
  • NTP 客户端使用 SpecialPollInterval 作为轮询间隔。
  • NTP 客户端和 NTP 服务器之间的时间偏移量大于 NTP 客户端中配置的 LargePhaseOffset。

在这种情况下,即使等待 SpikeWatchPeriod 传递,NTP 客户端也无法更正其时间。

原因

之所以出现此问题,是因为每次客户端轮询到 NTP 服务器的时间样本时,NTP 客户端都会进入 SPIKE 状态。 时间服务管理其内部状态,如果客户端进入 SPIKE 状态,则客户端不会同步其时间。

解决方法

若要解决此问题,使 NTP 客户端能够在出现 SPIKE 状态后与 NTP 服务器同步,请将 Windows 时间配置为使用 MinPollInterval/MaxPollInterval 作为轮询间隔。

若要将 Windows 时间配置为使用 MinPollInterval/MaxPollInterval 作为轮询间隔,请执行以下步骤:

  1. 单击“开始”,单击“运行”,键入 cmd,然后按 Enter。

    注意

    在 Windows 8 或 Windows Server 2012 中,按 Windows 徽标 Key+R 打开“运行”框,在“运行”框中键入 cmd,然后按 Enter。

  2. 在命令提示符处,键入以下命令。 键入命令后,按 Enter。

        w32tm /config /update /manualpeerlist:NTP_server_IP_Address,0x8 /syncfromflags:MANUAL  
    

    注意

    在开关中使用0x1标志 /manualpeerlist 时,指定使用 SpecialPollInterval。 若要解决此问题,请不要使用0x1标志。

解决方法

如果要使用“SpecialPollinterval”,应更改以下注册表:
键:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
值:MinPollInterval
类型:DWORD

若要避免此问题,注册表项应按如下所示应用条件表达式:
条件表达式:
SpecialPollInterval<(2^MinPollInterval)*(HoldPeriod+1)
域成员计算机具有默认值:

  • MinPollInterval=10
  • HoldPeriod=5

注意

如果按组策略或本地组策略设置 Windows 时间服务设置,则此解决方法不起作用,必须删除策略设置。

Status

Microsoft已确认,在“适用于”部分中列出的Microsoft产品中存在问题。

详细信息

Windows 时间使用的轮询间隔由以下注册表子项设置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters

如果此子项中的 NtpServer 条目的值包含0x1,则 Windows 时间使用 SpecialPollInterval 作为轮询间隔。 否则,Windows 时间使用 MinPollInterval/MaxPollInterval。 有关 Windows 时间服务和注册表值的其他信息,请访问以下Microsoft网站:
https://technet.microsoft.com/library/cc773263(WS.10).aspx