我在多个 RHEL7.1 虚拟机 (KVM) 上遇到 VoltDB 集群的奇怪问题。
时间在 VM 和它们的管理程序之间通过单个本地主 NTP 服务器同步 - 使用 chrony。主服务器与外部 ntp 池同步。
VoltDB 生成了一个随机错误:
FATAL [main] HOST:时钟偏差为 120,大于 100 毫秒限制。确保 NTP 正在运行。
已根据 VoltDB for ntpd 的性能指南尽可能多地设置 Chrony 配置 -这里。
我用我的“google-fu”搜索了高低 - 但我似乎无法找到关于 VoltDB 如何确定时钟偏差错误的答案。
我能找到的唯一最接近的代码是在这个 java 代码中: github 上的voltdb/SocketJoiner.java从第 603 行开始。
skew = System.currentTimeMillis() - currentTimeBuf.getLong();
我想知道为什么 VoltDB 不使用 java 函数调用 - System.nanoTime() 而不是精确计时。
任何帮助或见解都会很棒。