处理不准确的系统时钟

时间:2011-08-18 14:25:00

标签: .net time amazon-ec2

我有一个基于Windows的系统,它位于Amazon EC2实例上。存在一个已知问题,即Windows EC2实例在保持系统时间同步方面存在问题。我将随机登录系统,发现我的系统时钟距离几秒钟(不是太大的交易......)到几分钟甚至几小时(显然是一笔巨大的交易)。

考虑到我的网站的主要目标是发布安全的S3内容的链接,这些内容被严格的时间限制(即有时只需30秒到一分钟)锁定,这对我来说是个大问题。淘宝亚马逊的帮助论坛已经产生了许多答案,这些答案根本不起作用,亚马逊似乎忽略了声称它与Windows相关的问题。无论如何,我决定把事情掌握在自己手中,而不是在亚马逊上等待。

我考虑过的事情:

  • 创建一个每小时左右点击一次时间服务器列表的服务,获取当前时间,计算偏移量,然后使用此偏移量生成准确的链接。缺点是我需要有大量的时间服务器列表,这样他们就不会阻止我经常点击它们。此外,如果时间在其中一个时段的中间随机固定,我的链接将再次开始中断。
  • 创建Linux EC2实例并找到获取内部时间的方法。我没有读过关于他们在EC2中的时间准确度的任何信息,但我不得不假设这个废话更好。
  • 将我的网站托管在其他有精确时钟的地方......

您可能会想到我可能错过的其他选项吗?我并没有真正反对任何事情,只有一个例外是用另一种语言重写我的网站以便远离Windows(目前它是.Net MVC应用程序)。

提前致谢!

编辑:另外值得注意的是,我不能使用基于referrer的安全性作为我正在使用的插件,使用这些链接并不是100%在某些浏览器中发送引用者。

4 个答案:

答案 0 :(得分:3)

奇怪的是,您的服务器应该漂移几个小时。默认情况下,Windows Server 2008 R2配置为每隔900秒(15分钟)使用time.windows.com对其时钟进行NTP同步。如果这不能达到您所要求的及时性,您可以increase the frequency by modifying a registry key

如果您要托管ASP.NET应用程序,则应考虑在AppHarbor上运行它。我们运行在EC2之上,但是带走了沉闷的服务器管理任务,例如确保时钟同步。

答案 1 :(得分:0)

如果您选择这样做,可以尝试在Windows实例或Linux实例上制作应用程序,并且每当您需要知道时间是什么时,请向这样的地方发送api请求:http://worldtimeengine.com/api/获得当前的当地时间。

如果您不能依赖实例的时钟,那么从其他地方获取时间:)

答案 2 :(得分:0)

我几周来一直处理同样的问题,发现问题的根源很简单:

确保您的网络ACL允许入站UDP流量。

答案 3 :(得分:0)

将互联网时间服务器更改为 " time.nist.gov",它纠正了时间。