首页 > 其他分享 >[转帖]ntp导致的时钟回拨

[转帖]ntp导致的时钟回拨

时间:2024-01-11 16:11:53浏览次数:31  
标签:回拨 128ms ntp 转帖 序列号 ntpd 时钟

https://zhuanlan.zhihu.com/p/587313130

 

我们的服务器时间校准一般是通过ntp进程去校准的。但由于校准这个动作,会导致时钟跳跃变化的现象。而这种情况里面,往往回拨最能引起我们的困扰,回拨如下所示:

 

 

会引起什么问题

准点调度任务的误判

假设有一个任务每天0点时候获取昨天所有的数据进行对账,正常情况和时钟回拨的情况如下图所示:

 

 

针对这种情况,笔者让业务调整了调度触发时间,不要精确在准点,以避免此问题。

唯一序列号(雪花算法)

时钟回拨的情况也会影响到采用雪花算法这种对时间戳要求单调的算法。很明显的,时间戳回调后,极易形成重复的序列号。
对于这种情况我们采用预留序列号段,在检测到这种情况后,将预留序列号分配出去,进而解决这一问题。

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

事实上,ntpd本身还有另一种方案,即通过调整滴答频率来让我们的本地时钟慢慢的和精确时间match。但是,如果本机时间和精确时间(从ntpd服务器获取的时间)相差过大(> stepout threshold 128ms),则ntpd会直接采用跳跃变化的方式修正时间。代码如下所示:

ntp_loopfilter.c

double  clock_max = CLOCK_MAX; // .128也就是128ms

int local_lock(...) {
    // 差距>128ms之后,选择跳变
    if (fabs(fp_offset) > clock_max && clock_max > 0) {
        ......
        // 修正simclock.local_time
        step_systime(fp_offset);
        ......
    }
}

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

-x选项

我们采用-x选项,可以将stepout threshold(128ms)提升到600s。这样,不是太极端的情况,应该都不会触发到时钟回拨。但这会导致长时间时间戳不准确的问题(毕竟,调整滴答频率来慢慢match比较慢)。

stepback stepback

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

标签:回拨,128ms,ntp,转帖,序列号,ntpd,时钟
From: https://www.cnblogs.com/jinanxiaolaohu/p/17958797

相关文章

  • [转帖]京东大佬细说:Nginx反向代理时保持长连接,看完直呼"学到了!"
    https://mp.weixin.qq.com/s?__biz=MzU1MzE2NzIzMg==&mid=2247488405&idx=1&sn=7081ff4e0ac1de38ef14acf49d9102cd&utm_source=tuicool&utm_medium=referral 前言:nginx反向代理,如何通过配置支持从client到server的长连接?如何避免nginx线程池内线程数反复震荡导致性能......
  • [转帖]nginx反向代理时保持长连接
    https://www.cnblogs.com/liufarui/p/11075630.html ·【场景描述】HTTP1.1之后,HTTP协议支持持久连接,也就是长连接,优点在于在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。如果我们使用了nginx去作为反向代理或者负载均衡,从客户端过来的长......
  • [转帖]日常Bug排查-读从库没有原子性?
    https://zhuanlan.zhihu.com/p/658508920 3人赞同了该文章日常Bug排查系列都是一些简单Bug排查。问题虽小,但经常遇到,了解这些问题,会让我们少走点弯路,提升效率。说不定有些问题你遇到过哦:)Bug现场业务开发同学突然问了笔者一个问题,从库读会不会没有原子性?我下意......
  • [转帖]从Linux源码看TIME_WAIT状态的持续时间
    https://zhuanlan.zhihu.com/p/286537295 从Linux源码看TIME_WAIT状态的持续时间前言笔者一直以为在Linux下TIME_WAIT状态的Socket持续状态是60s左右。线上实际却存在TIME_WAIT超过100s的Socket。由于这牵涉到最近出现的一个复杂Bug的分析。所以,笔者就去Linux源码里面,......
  • [转帖]修改Linux内核参数,减少TCP连接中的TIME-WAIT
    https://www.cnblogs.com/xiaoleiel/p/8340346.html 一台服务器CPU和内存资源额定有限的情况下,如何提高服务器的性能是作为系统运维的重要工作。要提高Linux系统下的负载能力,当网站发展起来之后,web连接数过多的问题就会日益明显。在节省成本的情况下,可以考虑修改Linux的内......
  • [转帖]Linux中的lstopo命令(详细指南)
    https://juejin.cn/post/7117544110856077343 目录:简介语法命令总结参考文献介绍lstopo命令是用来显示系统的拓扑结构的。它提供了关于NUMA内存节点、共享缓存、CPU包、处理器内核和线程等信息。语法它渲染由hwloc发现的机器拓扑结构,有两种主要模式:文本渲染或图......
  • [转帖]SecurityProtocolType 枚举
    https://learn.microsoft.com/zh-cn/dotnet/api/system.net.securityprotocoltype?view=net-8.0 命名空间:System.Net程序集:System.Net.ServicePoint.dll指定Schannel安全包支持的安全协议。此枚举支持其成员值的按位组合。C#复制 [System.Flags]publicenum......
  • vue3 elementplus 表格表头过长 三个点显示
    vue3:constrenderHeaderMethods=({column})=>{returncreateVNode(resolveComponent('el-tooltip'),{effect:'dark',content:column.label,placement:'top'......
  • Winserver上如何配置和开启NTP客户端进行时间同步
    场景Winserver2012服务器,需要与其它服务器保持时间一致。已知NTP服务器的ip,在winserver服务器上如何进行配置和开启。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现1、运行-输入gpedit.msc打开组策略管理器 2、找到计算机配置-管理模板-系统-Windows时......
  • NTP时间服务器优先级配置
    先思考一个问题:当一个客户端配置向多个NTP时间服务器校时,此时客户端优先向哪个时间服务器同步时间呢?一个完整的NTP校时请求分四步:1、客户端向服务器发起校时请求2、服务器收到客户端发送的校时请求3、服务器处理客户端的校时请求并发送(响应)给客户端4、客户端收到服务器响应的......