最近,我的服务器上出现了 NTP 高延迟和偏移值。
$ ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*10.161.50.254 .SLK. 1 u 962 1024 377 23.942 -2.157 0.819
+10.147.50.253 .SLK. 1 u 1001 1024 377 26.628 2.991 0.245
但是,当我手动查询同步详细信息时,值却有很大不同。
$ ntpdate -q 10.161.50.254
server 10.161.50.254, stratum 1, offset -0.001250, delay 0.04601
5 Mar 11:14:37 ntpdate[29876]: adjust time server 10.161.50.254 offset -0.001250 sec
第一个输出延迟大约为 24 秒,而第二个输出延迟不到 1 秒。偏移值也是如此。我想知道哪个输出有效。如果第二个输出更精确,为什么第一个输出显示的结果不一样。谁能解释一下是什么导致了这种差异,哪一个是有效的,我应该参考哪一个?
(我们的服务对时间非常敏感,这样的差异会导致报告异常,例如负的服务使用时长)
答案1
我相信延迟是以毫秒为单位的时间:
http://www.clock.org/ntp/debug.html
该链接详细介绍了如何读取输出。但是,24ms 似乎是正确的,具体取决于您的网络速度。您还需要考虑以下输出ntpdate
:
https://superuser.com/questions/393426/how-inaccurate-is-my-system-clock-on-unix
该详细信息ntpdate -q
以秒为单位进行报告。46 毫秒大约与ntpq -p
输出延迟的时间相同。
答案2
正如其他评论和答案所指出的那样,偏移量ntpdate
以秒为单位,而ntpq
显示以毫秒为单位。因此,您的偏移量没有真正的差异(这是最重要的)。您的时间相当接近同步。但报告的延迟仍然存在差异。
我对我的服务器的延迟进行了一些测试,并得到以下结果:
对等体 1(本地 LAN 上的第 1 层 BeagleBone Black):通过 0.02689 秒
ntpdate
,通过 0.598 毫秒ntpq
,通过 平均 1.032 毫秒-和ping
之间的差异:26.292 毫秒ntpdate
ntpq
对等点 2(距离约 1000 公里的公共层 1 服务器):通过 0.04485 秒
ntpdate
,通过 18.662 毫秒ntpq
,通过 平均 18.379 毫秒-和ping
之间的差异:26.188 毫秒ntpdate
ntpq
对等点 3(跨太平洋的公共 1 层服务器):通过 耗时 0.21938 秒
ntpdate
,通过 耗时 193.844 毫秒ntpq
,通过 平均耗时 207.875 毫秒-和ping
之间的差值:25.536 毫秒ntpdate
ntpq
我的结论是:ntpdate
效率有点低,并且平均增加了大约 25-26 毫秒的固定开销(在我的计算机上),并且Linux UDP 堆栈通常比Linux ICMP 堆栈ntpd
稍微高效一些。ping