有哪些軟體可能會受到時間跳躍的嚴重影響?

有哪些軟體可能會受到時間跳躍的嚴重影響?

慢性文檔警告

注意:某些軟體會受到系統時間跳躍的嚴重影響。 (這就是 chronyd 通常使用迴轉的原因。)文件

但文檔沒有給出範例。有哪些軟體會受到嚴重影響?作業系統或任何後台程序是否面臨風險?

答案1

這是一個懸而未決的問題,但讓我舉一些例子:

  • 資料庫 - 大多數資料庫依賴大量精確的時間來儲存記錄、索引等
  • 安全性 - 精確的時間對於安全性非常重要,可以將操作映射到時間,並且不接受間隙或時間重複
  • 數位簽章 - 通常簽章文件的一部分是時間戳,因此錯誤的時間可能會使簽章無效
  • 排程軟體 - 可根據時間跳躍方向跳過或重複兩次作業。
  • 集群軟體 - 可能任何集群都需要同步,一個或多個節點的任何跳躍都可能產生不可預測的結果。

答案2

我最近遇到了一個可以追溯到 1999 年的 bug,它影響了 JVM 和 Android 運行時:https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4290274

……當使用scheduleAtFixedRate() 安排任務後一分鐘將系統時鐘設定為提前時,會(意外地)觸發兩次額外的執行。

我使用的設備以 1970 紀元作為當前時間,然後稍後收到正確的網路時間。有時,第 3 方庫會在時間設定之前初始化,導致其經歷 50 年的時間跳躍。

結果是scheduleAtFixedRate試圖趕上〜50年的調用......大約是27百萬連續調用,之間沒有延遲。

這會導致 GC 失控,並且通常會導致系統陷入困境,直到重新啟動為止

答案3

所有與真實硬體互動的軟體。如果你有一台烤麵包 20 秒的烤麵包機,而且它的軟體愚蠢到可以對照掛鐘,那麼如果你在等待烤麵包時糾正時鐘,你要么得到白麵包,要么烤焦麵包。

實際上,控制任何類型工業設備的所有應用都需要精確的計時,例如「打開閥門 5.3 秒以獲得正確的流體量」。偏差超過幾毫秒就會毀掉你的產品。

使用馬達定位任何物體的應用程式將使用步進馬達(速度較慢)或末端開關來確定何時停止。但通常情況下,您不會在每個重要位置都有開關,因此您將執行一些“xm/s 表示 A 毫秒,然後 ym/s 表示 B 毫秒”的邏輯。現在想像一下,當這個邏輯運行時,您的 NTP 守護程序將時間調整甚至一毫秒...

答案4

鴿舍IMAP 伺服器會受到影響,並且(在舊版本中)如果偵測到系統時間向後跳,它就會(故意)自殺。在 v2.0 中,它至少試圖糾正這種情況。

https://wiki.dovecot.org/TimeMovedBackwards

相關內容