我在 Amazon EC2 实例上的 Tomcat 上部署了 Java Web 应用程序。它使用 OpenID 身份验证进行用户登录。它现在运行了 8-9 个月。但是,当 ec2 实例运行超过一个月后,用户将无法再登录。原因是 OpenID 验证包括从 OpenID 提供商发送响应的时间与本地时间的比较,本地时间不应超过 60 秒。
但是,我的 EC2 实例得到了错误的系统时间。我将它配置为在每次重新启动实例时同步系统时间,但随着时间的推移它会领先于原子时间。例如,我在 15 天前重新启动了服务器,而今天,它提前了 27 秒。
有人遇到过这个问题吗?除了偶尔重启服务器之外,还有什么解决办法吗?
谢谢,
卓然
最佳答案
虚拟机本质上会在一段时间内造成与主机的时间差。这是虚拟机中最常见的问题之一。
有几种解决方案,我首先尝试的是* 使用NTP 服务器* 来同步时间。在这种情况下它应该对你有帮助
http://www.vmware.com/files/pdf/Timekeeping-In-VirtualMachines.pdf vmware 的这份白皮书讨论了其他可能的解决方案,但如果您还没有 NTP 服务器,我将从 NTP 服务器开始。
关于java - EC2实例上的原子时间和系统时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31042379/