对于 ntpd 来说,距离“太远”有多远?它能通过突然跳到重负载来达到这个距离吗?这能被覆盖吗?

对于 ntpd 来说,距离“太远”有多远?它能通过突然跳到重负载来达到这个距离吗?这能被覆盖吗?

在许多关于 ntpd 的入门书中,例如这个,总会有警告,如果您的时钟相差太大,ntpd 将停止重置时钟。

“太远”到底有多远?

此外,如果服务器突然增加负载,例如从完全空闲状态变为 100% CPU,温度升高是否会导致时钟偏差“太远”?

是否可以将 ntpd 配置为即使时间“相差太远”也可以重置时钟,或者至少使“相差太远”的时间稍微远一些?

答案1

首先,正如其他人提到的,默认的最大差异是 1000 秒。正如 @kyle 所说,您可以使用该-g标志来忽略此问题仅用于初始设置时钟。

此后,即使在高负载下,您也不应该看到时钟在更新之间漂移 1000 秒,如果确实如此,您确实需要更换时钟。您需要的配置中的设置是minpollmaxpoll。这些将允许您将间隔持续时间设置为 2 的幂(例如 10 表示 2 10 = 1024 秒)。

请注意,即使在高负载下,您的系统也可能不会出现大幅偏移,默认设置应该可以控制它。您不想每秒都用更新轰炸 NTP 服务器,因为您浪费资源,这会导致您被阻止,并且很可能致电您的 ISP NOC。如果您真的需要非常准确的时间,请使用 GPS 或设置您自己的 NTP 服务器。

答案2

如果时钟关闭,NTPD 可以缓慢调整时钟,时钟会偏移。其背后的想法是缓慢调整不会导致软件计时器出现问题、日志文件中出现奇怪的间隙等。

Unix 内核将可能的最大斜率限制为 500 百万分率 (PPM)。因此,时钟每超出可接受范围一秒,就需要花费 2000 秒的时间。

根据手册页,如果您的时钟偏差超过 1000 秒,ntpd 将无法工作。

由于将时钟调整 1000 秒至少需要 3 周,并且在此期间所有日期/时间戳仍然不正确,因此这似乎并不不合理。

ntpdate命令有一个-b切换为仅调整时间而不进行偏移。当本地系统时钟与“正确”时间偏差太大时,此功能非常有用。

答案3

这在man ntpd,并且您覆盖它,您可能会对该-g选项感兴趣(请注意“默认情况下为 1000 秒”:

-g 通常,ntpd如果偏移量超过恐慌阈值(默认情况下为 1000 秒),则退出并向系统日志发送一条消息。此选项允许将时间设置为任意值而不受限制;但是,这种情况只能发生一次。如果此后超过阈值,ntpd将退出并向系统日志发送一条消息。此选项可以与 -q-x选项一起使用。请参阅tinker命令以获取其他选项。

您可以在 中调整它ntpd.conf。如果您想禁用它,您可以设置tinker panic 0。请参阅杂项选项文档了解更多。

相关内容