您的位置:首页 > 编程语言 > PHP开发

NTP自动退出问题排查

2016-02-25 11:30 1126 查看
问题现象:ntp进程运行一段时间后自动退出

排查过程:

查看/var/log/message ntp异常信息如下

Feb 20 22:54:41 xnu_1 ntpd[2187]: 0.0.0.0 0617 07 panic_stop -28777 s; set clock manually within 1000 s.

Feb 20 22:54:57 xnu_1 ntpd_intres[2193]: parent died before we finished, exiting

查看官方文档,有如下说明:

-g

Normally, ntpd exits with a message to the system log if the offset exceeds the panic threshold, which is 1000 s by default. This option allows the time to be set to any value without restriction; however, this can happen only once. If the threshold is exceeded after that, ntpd will exit with a message to the system log. This option can be used with the -q and -x options. See the tinker command for other options.

大意就是,默认情况下如果ntp本地时间与上级ntp时间差超过1000s,那么ntp进程就会退出并在系统日志文件中记录。

可以使用tinker命令调整该阈值:

tinker [allan allan | dispersion dispersion | freq freq | huffpuff

huffpuff | panic panic | step srep | stepout stepout]

This command can be used to alter several system variables in

very exceptional circumstances. It should occur in the configu-

ration file before any other configuration options. The default

values of these variables have been carefully optimized for a

wide range of network speeds and reliability expectations. In

general, they interact in intricate ways that are hard to predict

and some combinations can result in some very nasty behavior.

Very rarely is it necessary to change the default values; but,

some folks cannot resist twisting the knobs anyway and this com-

mand is for them. Emphasis added: twisters are on their own and

can expect no help from the support group.

The variables operate as follows:

panic panic

The argument is the panic threshold, normally 1000 s. If

set to zero, the panic sanity check is disabled and a

clock offset of any value will be accepted.

The configuration directive tinker panic 0 instructs NTP to not give up if it sees a large jump in time. This is important for coping with large time drifts and also resuming virtual machines from their suspended state.

Note: The tinker panic 0 directive must be at the top of the ntp.conf file.

在阿里云的推荐配置文档中也有类似的说明:

如果本地时间和目标服务器差别太大,ntpd不会进行时间同步。解决方法有两个:

在配置文件/etc/ntp.conf的第一行加上这么一句

tinker panic 0

这可以保证ntpd在时间差较大时依然工作。

经修改后,问题解决。

PS:

parent died before we finished, exiting

出现这个记录是由于域名解析还没完成ntp就退出了

附注前人的经验总结:

http://www.jb51.net/LINUXjishu/341124.html

命令 "ntpq -q" 输出下面这样的一个表:

复制代码

代码如下:

remote refid st t when poll reach delay offset jitter
==============================================================================
LOCAL(0) .LOCL. 10 l 96h 64 0 0.000 0.000 0.000
*ns2.example.com 10.193.2.20 2 u 936 1024 377 31.234 3.353 3.096

更多细节
表头


remote – 用于同步的远程节点或服务器。“LOCAL”表示本机 (当没有远程服务器可用时会出现)
refid – 远程的服务器进行同步的更高一级服务器
st – 远程节点或服务器的 Stratum(级别,NTP 时间同步是分层的)
t – 类型 (u: unicast(单播) 或 manycast(选播) 客户端, b: broadcast(广播) 或 multicast(多播) 客户端, l: 本地时钟, s: 对称节点(用于备份), A: 选播服务器, B: 广播服务器, M: 多播服务器, 参见“Automatic Server Discovery“)
when – 最后一次同步到现在的时间 (默认单位为秒, “h”表示小时,“d”表示天)
poll – 同步的频率:rfc5905建议在 NTPv4 中这个值的范围在 4 (16秒) 至 17 (36小时) 之间(即2的指数次秒),然而观察发现这个值的实际大小在一个小的多的范围内 :64 (26 )秒 至 1024 (210 )秒
reach – 一个8位的左移移位寄存器值,用来测试能否和服务器连接,每成功连接一次它的值就会增加,以 8 进制显示
delay – 从本地到远程节点或服务器通信的往返时间(毫秒)
offset – 主机与远程节点或服务器时间源的时间偏移量,offset 越接近于0,主机和 NTP 服务器的时间越接近(以方均根表示,单位为毫秒)
jitter – 与远程节点同步的时间源的平均偏差(多个时间样本中的 offset 的偏差,单位是毫秒),这个数值的绝对值越小,主机的时间就越精确

字段的统计代码
表中第一个字符(统计代码)是状态标识(参见 Peer Status Word),包含 " ","x","-","#","+","*","o":

" " – 无状态,表示:
没有远程通信的主机
"LOCAL" 即本机
(未被使用的)高层级服务器
远程主机使用的这台机器作为同步服务器
“x” – 已不再使用
“-” – 已不再使用
“#” – 良好的远程节点或服务器但是未被使用 (不在按同步距离排序的前六个节点中,作为备用节点使用)
“+” – 良好的且优先使用的远程节点或服务器(包含在组合算法中)
“*” – 当前作为优先主同步对象的远程节点或服务器
“o” – PPS 节点 (当优先节点是有效时)。实际的系统同步是源于秒脉冲信号(pulse-per-second,PPS),可能通过PPS 时钟驱动或者通过内核接口。

参考 Clock Select Algorithm.
refid
refid 有下面这些状态值

一个IP地址 – 远程节点或服务器的 IP 地址
.LOCL. – 本机 (当没有远程节点或服务器可用时)
.PPS. – 时间标准中的“Pulse Per Second”(秒脉冲)
.IRIG. – Inter-Range Instrumentation Group 时间码
.ACTS. – 美国 NIST 标准时间 电话调制器
.NIST. –美国 NIST 标准时间电话调制器
.PTB. – 德国 PTB 时间标准电话调制器
.USNO. – 美国 USNO 标准时间 电话调制器
.CHU. – CHU (HF, Ottawa, ON, Canada) 标准时间无线电接收器
.DCFa. – DCF77 (LF, Mainflingen, Germany) 标准时间无线电接收器
.HBG. – HBG (LF Prangins, Switzerland) 标准时间无线电接收器
.JJY. – JJY (LF Fukushima, Japan) 标准时间无线电接收器
.LORC. – LORAN-C station (MF) 标准时间无线电接收器,注: 不再可用 (被 eLORAN 废弃)
.MSF. – MSF (LF, Anthorn, Great Britain) 标准时间无线电接收器
.TDF. – TDF (MF, Allouis, France)标准时间无线电接收器
.WWV. – WWV (HF, Ft. Collins, CO, America) 标准时间无线电接收器
.WWVB. – WWVB (LF, Ft. Collins, CO, America) 标准时间无线电接收器
.WWVH. – WWVH (HF, Kauai, HI, America) 标准时间无线电接收器
.GOES. – 美国静止环境观测卫星;
.GPS. – 美国 GPS;
.GAL. – 伽利略定位系统欧洲 GNSS;
.ACST. – 选播服务器
.AUTH. – 认证错误
.AUTO. – Autokey (NTP 的一种认证机制)顺序错误
.BCST. – 广播服务器
.CRYPT. – Autokey 协议错误
.DENY. – 服务器拒绝访问;
.INIT. – 关联初始化
.MCST. – 多播服务器
.RATE. – (轮询) 速率超出限定
.TIME. – 关联超时
.STEP. – 间隔时长改变,偏移量比危险阈值小(1000ms) 比间隔时间 (125ms)大

操作要点
一个时间服务器只会报告时间信息而不会从客户端更新时间(单向更新),而一个节点可以更新其他同级节点的时间,结合出一个彼此同意的时间(双向更新)。
初次启动时:
除非使用 iburst 选项,客户端通常需要花几分钟来和服务器同步。如果客户端在启动时时间与 NTP 服务器的时间差大于 1000 秒,守护进程会退出并在系统日志中记录,让操作者手动设置时间差小于 1000 秒后再重新启动。如果时间差小于 1000 秒,但是大于 128 秒,会自动矫正间隔,并自动重启守护进程。
当第一次启动时,时间频率文件(通常是 ntp.drift 文件,记录时间偏移)不存在,守护进程进入一个特殊模式来矫正频率。当时钟不符合规范时这会需要 900 秒。当校正完成后,守护进程创建时间频率文件进入普通模式,并分步校正剩余的偏差。
NTP 0 层(Stratum 0 )的设备如原子钟(铯,铷),GPS 时钟或者其他标准时间的无线电时钟为 1 层(Stratum 1)的时间服务器提供时间信号。NTP 只报告UTC 时间(统一协调时,Coordinated Universal Time)。客户端程序使用时区从 UTC 导出本地时间。
NTP 协议是高精度的,使用的精度小于纳秒(2的 -32 次方)。主机的时间精度和其他参数(受硬件和操作系统限制)使用命令 “ntpq -c rl” 查看(参见 rfc1305 通用变量和 rfc5905)。
“ntpq -c rl”输出参数

precision 为四舍五入值,且为 2 的幂数。因此精度为 2precision (秒)
rootdelay – 与同步网络中主同步服务器的总往返延时。注意这个值可以是正数或者负数,取决于时钟的精度。
rootdisp – 相对于同步网络中主同步服务器的偏差(秒)
tc – NTP 算法 PLL (phase locked loop,锁相环路) 或 FLL (frequency locked loop,锁频回路) 时间常量
mintc – NTP 算法 PLL/FLL 最小时间常亮或“最快响应
offset – 由结合算法得出的系统时钟偏移量(毫秒)
frequency – 系统时钟频率
sys_jitter – 由结合算法得出的系统时钟平均偏差(毫秒)
clk_jitter – 硬件时钟平均偏差(毫秒)
clk_wander – 硬件时钟偏移(PPM – 百分之一)

Jitter (也叫 timing jitter) 表示短期变化大于10HZ 的频率, wander 表示长期变化大于10HZ 的频率 (Stability 表示系统的频率随时间的变化,和 aging, drift, trends 等是同义词)
操作要点(续)
NTP 软件维护一系列连续更新的频率变化的校正值。对于设置正确的稳定系统,在非拥塞的网络中,现代硬件的 NTP 时钟同步通常与 UTC 标准时间相差在毫秒内。(在千兆 LAN 网络中可以达到何种精度?)
对于 UTC 时间,闰秒 leap second 可以每两年插入一次用于同步地球自传的变化。注意本地时间为夏令时时时间会有一小时的变化。在重同步之前客户端设备会使用独立的 UTC 时间,除非客户端使用了偏移校准。
闰秒发生时会怎样
闰秒发生时,会对当天时间增加或减少一秒。闰秒的调整在 UTC 时间当天的最后一秒。如果增加一秒,UTC 时间会出现 23:59:60。即 23:59:59 到 0:00:00 之间实际上需要 2 秒钟。如果减少一秒,时间会从 23:59:58 跳至 0:00:00 。另见 The Kernel Discipline.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ntp panic stop