我在JVM / Linux上有一个依赖System.nanoTime
和System.currentTimeMillis
的生产系统。我一直处于NTP完全搞砸了转换之前的情况,因此时钟运行速度比实时更快或更慢(并且转换影响前面提到的两种Java方法)。
如何才能最好地监控nanoTime
和currentTimeMillis
是否以接近正确的速度运行?我想定期测量这些方法中的增量,并将它们与同期的“已知”增量进行比较。什么是“已知”增量的可靠来源? C / C ++解决方案很好。
答案 0 :(得分:0)
可靠的时间源,特别是在VM上,必须在机器外部。我假设您无法访问专用硬件(如原子钟或GPS接收器),因此您的下一个最佳选择是NTP。查找您附近的NTP服务器,通过系统时钟获取“之前”时间,通过NTP获取时间,然后“读取”时钟。比较'之前'和'之后'的平均值与NTP值之间的差异。您不应期望差异为零(您的网络延迟可能在两个方向上都不相同,等等)。随时监控差异。我预计这种变化会降低趋势,但是如果你看到趋势在任何程度上都有增加(或减少),那么你可能会有一个混乱的时钟。