chronyのドキュメントでは警告している
注意: 特定のソフトウェアは、システム時間のこのようなジャンプによって深刻な影響を受けます。(これが、chronyd が通常、スルーを使用する理由です。)ドキュメンテーション
しかし、ドキュメントには例が示されていません。深刻な影響を受けるソフトウェアの例は何ですか? OS またはバックグラウンド プロセスが危険にさらされていますか?
答え1
これは少し未解決の問題ですが、いくつか例を挙げてみましょう。
- データベース - それらのほとんどは、レコードやインデックスなどを保存するために正確な時間に依存しています。
- セキュリティ - アクションを時間にマッピングするには正確な時間がセキュリティにとって非常に重要であり、ギャップや時間の重複は受け入れられません。
- デジタル署名 - 通常、署名された文書の一部はタイムスタンプであるため、時間が間違っていると署名が無効になる可能性があります。
- スケジューリング ソフトウェア - 時間のジャンプ方向に応じてジョブをスキップしたり、2 回繰り返したりできます。
- クラスタリング ソフトウェア - おそらくどのクラスターも同期する必要があり、1 つ以上のノードがジャンプすると予期しない結果が生じる可能性があります。
答え2
私は最近、1999 年に遡り、JVM と Android ランタイムの両方に影響するバグに遭遇しました。https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4290274
... タスクが scheduleAtFixedRate() を使用してスケジュールされた後、システム クロックが 1 分進むと、予期せず 2 回の追加実行が発生します。
私は、現在の時刻として 1970 年を起点として開始し、少し後に正しいネットワーク時刻を受信するデバイスで作業しています。時折、時刻が設定される前にサードパーティのライブラリが初期化され、50 年のタイムジャンプが発生することがあります。
その結果、scheduleAtFixedRate
約50年分の呼び出しに追いつこうとしました...それは約27でした百万遅延なしで連続して呼び出します。
これによりGCが狂い、再起動されるまでシステムが停止することになります。
答え3
実際のハードウェアとやり取りするすべてのソフトウェア。パンを 20 秒間トーストするトースターがあり、そのソフトウェアが壁掛け時計と照合するほど愚かだった場合、トーストが焼けるのを待っている間に時計を修正すると、パンは白くなるか焦げるかのどちらかになります。
事実上、あらゆる種類の産業用デバイスを制御するすべてのアプリケーションでは、たとえば「正しい量の流体を得るためにバルブを 5.3 秒間開く」などの正確なタイミングが必要です。数ミリ秒以上ずれると、製品が台無しになります。
モーターを使用して何かを配置するアプリケーションは、ステップ モーター (低速) を使用するか、停止するタイミングを決定するためのエンド スイッチを使用します。ただし、多くの場合、すべての重要な位置にスイッチがあるわけではないため、"A ミリ秒間 xm/s、B ミリ秒間 ym/s" というロジックを実行します。このロジックの実行中に、NTP デーモンが 1 ミリ秒でも時間を調整すると想像してください...
答え4
鳩小屋IMAP サーバーは影響を受け、(古いバージョンでは) システム時間が逆方向にジャンプしたことを検出すると (意図的に) 自殺します。バージョン 2.0 では、少なくとも状況を改善しようとします。