慢性文档警告
注意:某些软件会受到系统时间跳跃的严重影响。(这就是 chronyd 通常使用 slewing 的原因。)文档
但文档没有给出示例。有哪些软件会受到严重影响?操作系统或任何后台进程是否面临风险?
Rom*_*nov 32
这是一个悬而未决的问题,但让我举一些例子:
小智 13
我最近遇到了一个可以追溯到 1999 年的 bug,它影响 JVM 和 Android 运行时:https://bugs.java.com/bugdatabase/view_bug.do ?bug_id=4290274
...当使用scheduleAtFixedRate() 安排任务后一分钟将系统时钟设置为提前时,会(意外地)触发两次额外的执行。
我使用的设备以 1970 纪元作为当前时间,然后稍后收到正确的网络时间。有时,第 3 方库会在设置时间之前初始化,导致其经历 50 年的时间跳跃。
结果是scheduleAtFixedRate试图赶上大约 50 年的调用量……这大约是 2700万次连续调用,中间没有任何延迟。
这会导致 GC 失控,并且通常会导致系统陷入困境,直到重新启动为止
所有与真实硬件交互的软件。如果你有一台烤面包 20 秒的烤面包机,而且它的软件愚蠢到可以对照挂钟,那么如果你在等待烤面包时纠正时钟,你要么会得到白面包,要么会烤焦。
实际上,控制任何类型工业设备的所有应用都需要精确的计时,例如“打开阀门 5.3 秒以获得正确的流体量”。偏差超过几毫秒就会毁掉你的产品。
使用电机定位任何物体的应用程序将使用步进电机(速度较慢)或末端开关来确定何时停止。但通常情况下,您不会在每个重要位置都有一个开关,因此您将执行一些“xm/s 表示 A 毫秒,然后 ym/s 表示 B 毫秒”的逻辑。现在想象一下,当这个逻辑运行时,您的 NTP 守护进程将时间调整甚至一毫秒......
| 归档时间: |
|
| 查看次数: |
7423 次 |
| 最近记录: |