聊聊Ntp造成的时钟回拨

时钟回拨

咱们的主机期间校准普通是经过ntp进程去校准的。但由于校准这个举措,会造成时钟腾跃变动的现象。而这种状况外面,往往回拨最能惹起咱们的困扰,回拨如下所示:

会惹起什么疑问

准点调度义务的误判

假定有一个义务每天0点时刻失掉昨天一切的数据启动对账,反常状况和时钟回拨的状况如下图所示:

针对这种状况,笔者让业务调整了调度触发期间,不要准确在准点,以防止此疑问。

惟一序列号(雪花算法)

时钟回拨的状况也会影响到驳回雪花算法这种对期间戳要求干燥的算法。很显著的,期间戳回调后,极易构成重复的序列号。

关于这种状况咱们驳回预留序列号段,在检测到这种状况后,将预留序列号调配进来,进而处置这一疑问。

ntpd的时钟回拨(跳变)条件

理想上,ntpd自身还有另一种打算,即经过调整滴答频率来让咱们的本地时钟缓缓的和准确期间match。然而,假设本机期间和准确期间(从ntpd主机失掉的期间)相差过大(>stepout threshold 128ms),则ntpd会间接驳回腾跃变动的模式修正期间。代码如下所示:

而在咱们的线上,在/var/log/message中经常能见到时钟跳变的输入。

-x选项

咱们驳回-x选项,可以将stepoutthreshold(128ms)优化到600s。这样,不是太极其的状况,应该都不会触发到时钟回拨。但这会造生常年间期间戳不准确的疑问(毕竟,调整滴答频率来缓缓match比拟慢)。

stepback stepback

在高版本的ntpd中,还可以有stepback选项,假设设置为0的话,则不会回拨。

您可能还会对下面的文章感兴趣: