NTP时钟调整策略

一、        问题背景

天威视讯项目3月底发生了一次点播出现节目请求超时的情况,在查询故障的过程中,发现MAP服务器操作系统的时钟被向前调整了11秒,姑且不论是否是这个原因导致的故障,但每台服务器在安装了NTP的情况下,为什么还会一次修改达到11秒情况的时间差,是需要查清的一个事情。

此文由博主徐徐原创,转载请指明出处欢乐世界http://www.happyworld.net.cn

二、        问题分析

1、       现象分析

天威视讯项目目前部署的NTP服务是一台MYSQL服务器作为NSP系统的服务端,其他服务器如(IPG、AAA、MAP等)就同步这台服务器的时钟,而MYSQL则同步天威自己部署的一台NTP服务器。一个简单的三层的架构。

查看了8台MAP,每台MAP都有过调整11秒时钟的记录,且每台调整的时间都不一样,查看时钟源MYSQL的系统日志,发现是由于MYSQL1的时钟源调整了11秒的时间,进而引起NSP系统内所有服务器都做了一次同步操作。

MYSQL1:  Mar 31 12:08:37 MYSQL1 ntpd[20241]: time reset -11.476554 s

MAP1:    Mar 31 13:06:20 MAP1 ntpd[26731]: time reset -11.476079 s

MAP2:    Mar 31 12:57:42 MAP2 ntpd[25106]: time reset -11.476056 s

IPG1:     Mar 31 12:51:26 IPG1 ntpd[4426]: time reset -11.476588 s

AAA1:    Mar 31 13:14:33 AAA1 ntpd[8932]: time reset -11.476668 s

从上面日志可以看出,在MYSQL时间修改后,其他服务器陆续进行了时钟校正。我们这里暂不讨论天威源头NTP时钟是否有过11秒的调整,这里讨论为何架设了NTP服务之后,时间会一次校正这么大的值。

2、       原因分析

经过查询资料,NTP的时间同步有两种方式,一种是通过ntpdate进行手动调整(也可以做成定时任务);一种是通过ntpd服务进行自动调整。目前天威部署的NTP全是以第二种ntpd服务的方式配置的。

ntpdate就是执行该命令的时候就将客户端的时钟与服务器端的时钟做下同步,不管差异多大,都是一次调整到位。

而ntpd服务的方式,又有两种策略,一种是平滑、缓慢的渐进式调整(adjusts the clock in small steps所谓的微调);一种是步进式调整(跳跃式调整)。两种策略的区别就在于,微调方式在启动NTP服务时加了个“-x”的参数,而默认的是不加“-x”参数。

假如使用了-x选项,那么ntpd只做微调,不跳跃调整时间,但是要注意,-x参数的负作用:当时钟差大的时候,同步时间将花费很长的时间。-x也有一个阈值,就是600s,当系统时钟与标准时间差距大于600s时,ntpd会使用较大“步进值”的方式来调整时间,将时钟“步进”调整到正确时间。

假如不使用-x选项,那么ntpd在时钟差距小于128ms时,使用微调方式调整时间,当时差大于128ms时,使用“跳跃”式调整。

这两种方式都会在本地时钟与远端的NTP服务器时钟相差大于1000s时,ntpd会停止工作。在启动NTP时加了参数“-g”就可以忽略1000S的问题。

以下是man ntpd里关于加参数“-x”的描述:

-x

Normally, the time is slewed if the offset is less than the step threshold, which is 128 msby default, and stepped if above the  threshold.  This option  sets the threshold to 600 s, which is well within the accuracy window to set the clock manually. Note: Since the slew rate of typical Unix kernels is limited to 0.5 ms/s, each second of adjustment requires an amortization interval of  2000 s. Thus, an adjustment as much as 600 s  will take  almost  14  days to complete. This option can be used with the -g and -q options. See the tinker command for other options. Note: The kernel time discipline is disabled with this option.


Offset(与服务器的时间差)


0-128ms


128ms-600s


600s-1000s


1000s以上


使用-X参数


微调


微调(速度大约是0.5ms/s,调整600秒要14天左右)


跳跃


退出(加-g参数可忽略)


不使用-X参数


微调


跳跃


跳跃


退出(加-g参数可忽略)

只有对于跳跃式的校正时间,系统日志才会记录。

天威视讯项目由于是按照跳跃式配置,所以就会一次有修改11秒的情况出现。

3、       验证测试

针对这两个策略,我们做了几个测试验证:

1、 未加参数“-x”时,如何调整:

将一台测试服务器的时钟,向前修改了大约6秒钟左右

[[email protected] ~]# date -s 16:15:28

2012年 04月 06日 星期五 16:15:28 CST

同时在NTP服务器端和客户端执行查询时间操作,两者相差6秒。


NTP客户端


NTP服务端


[[email protected] ~]# date
2012年 04月 06日 星期五 16:15:34 CST


[[email protected] ~]# date
2012年 04月 06日 星期五 16:15:40 CS

然后一直查看NTP客户端服务器的时钟同步效果:

刚开始,未检测到时间异常,下一次同步要512秒一个周期。

[[email protected] ~]# ntpq -p

remote           refid      st t when poll reach   delay   offset  jitter

==============================================================================

*CC1           172.18.245.1  3  u  132  512  377    1.206    0.806   0.278

检测到与远端服务器的时间差offset 为6289.10(单位:ms

[[email protected] ~]# date -R

Fri, 06 Apr 2012 16:30:44 +0800

[[email protected] ~]# ntpq -p

remote           refid      st t when poll reach   delay   offset  jitter

==============================================================================

CC1             172.18.245.1  3 u   1  512  377    1.208  6289.10 4446.22

经过几次时间的同步,客户端发现与服务器端时钟的确是有差异,不是偶然一次的行为,客户端须得进行相应的调整,于是就进行了一次step的跳跃式时间校正。同步周期poll也由之前的512秒一次,变成每64秒一次(同步不等于就立即调整时间)。同步完后,与服务器的时间差offset 为0ms。

remote           refid      st t when poll reach   delay   offset  jitter

==============================================================================

*CC1             172.18.245.1   3 u  513  512  377  1.208  6288.98   0.771

[[email protected] ~]# ntpq -p

remote           refid      st t when poll reach   delay   offset  jitter

==============================================================================

CC1             .STEP.       16 u  225  64    0   0.000   0.000   0.001

此时再同时查询服务器端和客户端的时间:


NTP客户端


NTP服务端


[[email protected] ~]# date -R
Fri, 06 Apr 2012 16:56:24 +0800


[[email protected] ~]# date -R
Fri, 06 Apr 2012 16:56:24 +0800

目前时间已经同步正常,查看客户端的系统日志,可以发现:

[[email protected] ~]# tail -f /var/log/messages

Apr  6 16:39:01 AAA3 ntpd[2576]: synchronized to 172.16.100.81, stratum 3

Apr  6 16:56:16 AAA3 ntpd[2576]: time reset +6.288863 s

Apr  6 16:59:49 AAA3 ntpd[2576]: synchronized to 172.16.100.81, stratum 3

由此可以验证,在默认情况下,未加参数“-X”的情况下,NTP在时差大于128ms的情况,是进行的step跳跃式的时间同步。

2、 加参数“-x”时,如何调整:

将一台测试服务器的时钟,向前修改了大约10秒钟左右

15:02分修改时间

[[email protected] ~]# date -s 15:02:16

2012年 04月 06日 星期五 15:02:16 CST


查询时间


NTP客户端


NTP服务端


offset


15:18


[[email protected] ~]# date
2012年 04月 06日 星期五 15:18:28 CST


[[email protected] ~]# date
2012年 04月 06日 星期五 15:18:38 CST


10秒


[[email protected] ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*CC1             172.18.245.1     3 u   61   64  377    0.094  9895.33  81.311


 


 


15:33


[[email protected] ~]# date
2012年 04月 06日 星期五 15:33:15 CST


[[email protected] ~]# date
2012年 04月 06日 星期五 15:33:24 CST


9秒


[[email protected] ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*CC1             172.18.245.1     3 u  102  128  377    0.098  8737.38 225.355


 


 


15:43


[[email protected] ~]# date -R
Fri, 06 Apr 2012 15:43:05 +0800


[[email protected] ~]# date -R
Fri, 06 Apr 2012 15:43:13 +0800


8秒


[[email protected] ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*CC1             172.18.245.1     3 u   97  128  377    0.099  8125.89 508.792


中间一直是微调状态


18:09


[[email protected] ~]# date -R
Fri, 06 Apr 2012 18:09:04 +0800


[[email protected] ~]# date -R
Fri, 06 Apr 2012 18:09:05 +0800


1秒


[[email protected] ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*CC1             172.18.245.1     3 u  260  512  377    1.325  1241.99 220.343

可以看出,NTP一直在同步时钟,且进行很小的微调,9895.33ms的时间差,调整到18点09分还有1241.99ms,之间用了大概3小时来同步8秒多的时间,大概每秒调整0.7ms时间。

3、 加参数“-x”时,如何调整(时间差比较偏大,但是小于600s的情况):

我们第二步测试的是10秒时间差的情况,对于更大的时间差,这种微调策略是什么效果呢,我们再进行一个测试验证:

将一台测试服务器的时间修改偏差了70几秒(17:26修改):

[[email protected] ~]# date -s 17:26:00

2012年 04月 06日 星期五 17:26:00 CST


查询时间


NTP客户端


NTP服务端


offset


17:35


[[email protected] ~]# date -R
Fri, 06 Apr 2012 17:35:19 +0800


[[email protected] ~]# date -R
Fri, 06 Apr 2012 17:36:32 +0800


73秒


[[email protected] ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 CC1             172.18.245.1     3 u    6   64  377    0.123  73676.1   9.785


 


 


第二天
10:43


[[email protected] ~]# date -R
Sat, 07 Apr 2012 10:43:26 +0800


[[email protected] ~]# date -R
Sat, 07 Apr 2012 10:43:42 +0800


16秒


[[email protected] ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*CC1             172.18.245.1     3 u   31   64  377    0.122  16137.3 218.643


 


 


第二天
17:27


[[email protected] ~]# date -R
Sat, 07 Apr 2012 17:27:38 +0800


[[email protected] ~]# date -R
Sat, 07 Apr 2012 17:27:38 +0800


5ms


[[email protected] ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*CC1             172.18.245.1     3 u   43  256  377    0.135    5.182   0.589

这次73秒的时间差,用了大概1天的时间,平均每秒调整0.5ms。

由此可以验证,对于小于600s的情况,加了参数“-x”的,不管是10秒还是70秒,500秒,都是进行着这种微调式的时钟同步策略,NTP服务将这种时间差通过分散到每一秒去逐步进行微调,让系统基本感觉不到时间上的变化。这样能保证某些对时间跳动敏感的系统里,能很好的保证业务的安全。

4、 加参数“-x”时,如何调整(时间差大于600s):

对于大于600s时间差的情况,我们也做了测试验证:

将时钟往前调十几分钟:


查询时间


NTP客户端


NTP服务端


offset


17:08


[[email protected] ~]# date -R
Fri, 06 Apr 2012 16:55:16 +0800


[[email protected] ~]# date -R
Fri, 06 Apr 2012 17:08:09 +0800


将时间改为提前13分钟


[[email protected] ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 CC1             172.18.245.1     3 u    -   64    1    0.130    0.077   0.001


 


 


 


[[email protected] ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 CC1             172.18.245.1     3 u    2   64  377    0.124  772789. 292086.


772秒


 


 


[[email protected] ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 CC1             172.18.245.1     3 u    2   64  377    0.124  772789. 292086.


 772秒


 


 


 


 


0秒 


[[email protected] ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 CC1             172.18.245.1     3 u   31   64    1    0.136    8.067   0.001


 


17:17


[[email protected] ~]# date -R
Fri, 06 Apr 2012 17:17:36 +0800


[[email protected] ~]# date -R
Fri, 06 Apr 2012 17:17:36 +0800


0秒

NTP服务大概过了5分钟后,就将相差的700多秒时间差,一步到位的进行了校正。

查询系统日志:

Apr  6 17:02:53 AAA3 ntpd[24511]: synchronized to 172.16.100.81, stratum 3

Apr  6 17:15:45 AAA3 ntpd[24511]: time reset +772.789372 s

Mar 19 10:44:12 yunwei-002 ntpd[3433]: 0.0.0.0 c61c 0c clock_step +763.773061 s

三、        问题处理

对于VOD点播系统,MAP、MYSQL、ORACLE等模块都会对一些时间比较敏感(比如节目调度时的定时计划、时移时的时间差等等,数据库中可能造成某些记录的创建时间晚于修改时间等等),如果时间不是连续的,而是跳动的,必然对业务有较大的影响。建议后期对NTP策略进行调整。

[[email protected] ~]# cat /etc/sysconfig/ntpd

# Drop root to id ‘ntp:ntp‘ by default.

OPTIONS="-u ntp:ntp -x  -p /var/run/ntpd.pid"

# Set to ‘yes‘ to sync hw clock after successful ntpdate

SYNC_HWCLOCK=no

# Additional options for ntpdate

NTPDATE_OPTIONS=""

将/etc/sysconfig/ntpd文件中的OPTIONS里增加“-x”参数,重启ntpd服务即可。

[[email protected] ~]# service ntpd restart

原文地址:https://www.cnblogs.com/jjmcao/p/9102778.html

时间: 2024-10-08 02:21:42

NTP时钟调整策略的相关文章

《Code Complete》ch.25 代码调整策略

WHAT? 本章讨论程序性能调整问题.但是对用户来说,程序员按时交付软件,提供一个清爽的用户界面,避免系统经常死机常常比程序性能更加重要 WHY? 在程序设计这种文化中,编写出能够节省几微秒的代码可以证明你很酷-- HOW? Pareto法则 即80/20法则,指你可以通过20%的努力获取80%的成果 一些无稽之谈 在搞基高级语言中,减少代码行数可以加快代码执行速度 特定运算可能比其他的更快,代码规模也较小:在某个环境下提升程序性能的方法放到另一个环境中可能会损害程序性能.在调整代码的时候你实际

组织架构调整策略及设计工具

组织架构调整策略 企业在不同发展阶段会有战略调整,战略调整必然带来组织架构改变.企业组织架构在笔者的企业管理理论体系中属于企业管理流程中的一级流程,组织架构设置好坏直接影响企业流程运行效率.因此,在企业成长过程中,组织架构调整虽然不是常态工作,但也绝不是一劳永逸.一成不变的.企业遇到以下情况都可能调整组织架构:扩大规模.增加市场份额.增加新的产品.增加新的服务:或者缩小产品战线.调整销售渠道.改变代理方式:或者改变管理模式.上线管理软件.引进新设备新技术等等. 调整组织架构必须通盘考虑,以防范组

PyTorch学习之六个学习率调整策略

PyTorch学习率调整策略通过torch.optim.lr_scheduler接口实现.PyTorch提供的学习率调整策略分为三大类,分别是 a. 有序调整:等间隔调整(Step),按需调整学习率(MultiStep),指数衰减调整(Exponential)和 余弦退火CosineAnnealing.b. 自适应调整:自适应调整学习率 ReduceLROnPlateau.c. 自定义调整:自定义调整学习率 LambdaLR. 1 等间隔调整学习率 StepLR等间隔调整学习率,调整倍数为 ga

震惊!NTP时钟服务器竟然还有这功能

NTP时钟服务器竟然还有这功能 前言 在北斗卫星导航系统的行业应用方面,国家政策成为市场的主要推动力.在一些关乎国计民生的重点行业,国家层面也在布局由北斗逐步取代GPS而成为行业内主流导航.定位工具. 自20世纪90年代GPS进入我国开始,国内的卫星导航技术迅速发展,其中交通是应用最为典型.规模最大的领域,其市场比例占卫星导航应用市场的80%以上.而交通作为卫星导航技术应用最广泛的行业,必然是北斗产业化的重要突破口. 北斗校时服务器简介 北斗对时服务器是西安同步电子科技有限公司集合多年在时频领域

NTP时钟服务器竟然还有这功能

NTP时钟服务器竟然还有这功能北斗校时服务器简介北斗对时服务器是因应广大客户对时间统一系统要求,从保障安全的角度考虑,利用当前先进的电路集成.软件编程技术,结合中国北斗卫星的技术特点,实现了输入北斗卫星信号,输出(TTL.IRIG-B.差分.串口.网络等).多设备适用(网络摄像机.NVR.服务器.储存器.电脑.控制机等),为轨道交通.气象电力.金融.航道水运及相关领域提供了高精度.高稳定.高安全,高可靠的标准时钟源.设备内嵌国际通用的NTP/SNTP协议,同步网络中的所有计算机服务器.控制器等设

系统时钟调整通知

请系统各个时钟信号设置模块,把现在的最新时钟调整为 5.11日 明天早上9点,把日期调回GMT+8的标准时间,11.1 然后下午5点,把11.1日的时间向前摆动5个月,跨过明年年初的冬天-冬令时,直接进入春天...OK 感谢伟大的胡克先生..宇宙精神与我们同在.... 原文地址:https://www.cnblogs.com/comsci/p/11772721.html

H3C设备NTP时钟无法同步排查方法

NTP 时钟无法同步排查方法:1. V5设备NTP同步的版本默认是V3版本,V7设备默认是V4版本,如果直接在V7设备上配置NTP,NTP上的时钟可能无法实现同步的,需要手动将版本更改为V3就可以同步时钟了V5设备查看版本如下:[H3C]dis ntp sessions ver[H3C]dis ntp sessions verbose clock source: 10.1.12.1clock stratum: 2clock status: configured, master, sane, va

NTP时钟服务器配置

yum install ntp  //安装ntp /etc/NTP.conf  配置文件 # Permit time synchronization with our time source, but do not # permit the source to query or modify the service on this system. restrict default kod nomodify notrap nopeer noquery restrict -6 default kod

软件架构————代码调整策略与技术

性能 对用户来说,程序员按是交付软件,提供一个清爽的用户界面,避免系统死机常常比程序的性能更为重要. 性能同代码速度之间存在着很松散的关系.如果只是关注于代码的运行速度,那么这种工作有点顾此失彼.特别要当心放弃其他功能区让代码跑的更快.如果过分强调速度,程序的整体性能常常不升反降. 性能和代码调整 程序需求:在花费时间处理性能问题之前,请想清楚是否在解决一个确实需要解决的问题. 程序设计:程序设计包括了单个程序的主要框架,主要包括程序如何被分解为类.有时程序的设计会使一个高性能的系统难于实现.其