【问题标题】:Clock mismatch between webserver & database网络服务器和数据库之间的时钟不匹配
【发布时间】:2015-08-15 04:59:59
【问题描述】:

我注意到我的网络服务器 (Amazon EC2) 和数据库(运行 PostgreSQL 的 Amazon RDS)之间的时间戳不匹配。他们离开了几秒钟。

在数据库中创建了一些带有时间戳的条目(使用 SQL current_timestamp)。服务器读取这些条目并将时间戳与其自己的时钟进行比较(使用 Django timezone.now())以选择比“x”分钟新的条目。

这种不匹配会导致数据不一致。什么是让我的代码对不同机器之间的时钟不匹配具有容错能力的好方法。我应该删除服务器端的timezone.now() 函数,而是从数据库中读取时间戳吗?这将增加少量的数据库访问开销,但时间戳在多个 Web 服务器之间是一致的。

或者,有没有更好的方法让两台机器保持同步?

【问题讨论】:

  • 如果您使用的是 linux 机器,您可以启用 ntpd 以保持时钟同步。

标签: django postgresql datetime amazon-web-services


【解决方案1】:

几秒钟的不匹配太多了。您是否在服务器上使用 NTP 将时钟同步到某个参考服务器?我假设 Amazon RDS 确实保持时钟同步,所以我怀疑你可以通过 NTP 在你的 EC2 实例上做一些事情来减少偏差。

【讨论】:

    【解决方案2】:

    如果您使用 RDS,我认为您无能为力,所以我会采用数据库查询方法。另外,也许您正在经历同样的bug

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 2012-06-05
      相关资源
      最近更新 更多