为什么我的 EC2 服务器每天都会有约 10 秒的延迟?

为什么我的 EC2 服务器每天都会有约 10 秒的延迟?

我有一个我认为是系统文件的东西,/etc/cron.daily/ntpupdate
ntpdate ntp.ubuntu.com每天运行以与网络时间同步。它每天都会生成与此非常相似的输出:

/etc/cron.daily/ntpupdate:
16 Jan 06:30:42 ntpdate[21446]:
step time server 91.189.94.4 offset -12.646804 sec

我不确定这91.189.94.4意味着什么,但我很确定-12.646804 sec这意味着我的服务器关闭了大约 12 秒。但我不知道为什么它每天都会减少大约相同的数量。这是运行 Ubuntu 的 Amazon EC2 实例。

我只能猜测,要么是它每天慢/快 12 秒,要么是其他东西正在与另一个慢了 12 秒的时钟同步时间,然后我重新同步它。

我应该怎么做才能进一步追踪这个问题?我在/etc/cron.*目录或用户的 cron 作业中没有看到任何其他 cron 作业...

更新

只是想我会分享我开始每小时运行一次,看看在某个小时是否会有大的跳跃。这是每小时的产量:

16 Jan 15:17:04 ntpdate[8346]:
adjust time server 91.189.94.4 offset -0.464418 sec

因此显然每小时时钟都会偏差大约半秒,因此每天(24 小时)时钟偏差大约 12 秒是有道理的。我猜时钟跑得太快了!谢谢!

答案1

有许多因素可能会导致软件时钟运行缓慢或快速。虚拟服务器上的时钟特别容易出现此类问题。每天 12 秒是相当糟糕的,直到您遇到时钟以 180-200% 速度运行的虚拟盒子!暂停的笔记本电脑上的时钟也会遇到计时问题。

您应该考虑放弃ntupdate支持ntpd.软件包名称位于ntpDebian 上(大概 Ubuntu 上也有)。 NTP 守护进程比 cron 作业更主动地保持您的时间同步,与一个或多个其他 NTP 服务器同步,并使您的时钟更加准确。这是相同协议ntpdate使用的另一种实现,除了ntpd连续监视时间之外。

如果您不希望 的(非常小的)开销ntpd,您可以考虑ntpdate每小时运行一次。假设每小时休息 0.5 秒,这应该足够了。

答案2

回答你问题的另一半,即为什么会发生这种情况:计算机硬件时钟是出了名的不准确,因此虽然一天中 12 秒的偏差很不寻常,但实际上也并不是那么不寻常。

(这可能是因为网络时间的使用很普遍,因此与手表中的情况相比,即使每天 12 秒的漂移也算不了什么——因此硬件公司可以使用廉价的时钟芯片。从物理上来说,发生的情况可能是时钟芯片中的振荡器校准得不太正确,所以它运行得稍微慢一些,但确实很慢。)

答案3

我怀疑ntp不会更新你服务器的时间,因为差异太小了。我遇到了类似的问题,我每天都看到相同的延迟,直到我发现有一点差异 ntp 在出现特定阈值之前不会更新。

检查同步的最低阈值配置。

相关内容