![コンピュータの時計 (または LAN) に問題がありますか?](https://rvso.com/image/1638127/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E6%99%82%E8%A8%88%20(%E3%81%BE%E3%81%9F%E3%81%AF%20LAN)%20%E3%81%AB%E5%95%8F%E9%A1%8C%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
非常に奇妙な動作が発生しており、原因を特定するのに苦労していますが、コンピューターのクロックが原因だと思います。設定と概要は次のとおりです。
私の自宅のネットワークにはモデム経由でインターネットに接続しているコンピュータが 2 台あります。1 台は (コンピュータA) は RJ45 経由で接続され、もう 1 つは (コンピュータB) を WLAN 経由で接続します。両方のマシンで Windows 10 が実行されており、両方のマシンでアプリケーション用のまったく同じスタック (Postgresql 13 データベースと Java アプリ) が使用されています。
私は Java アプリを使用して、数ミリ秒ごとに到着する Websocket 経由でイベントを監視しています。イベントはインターネット上のサーバーに公開され、ミリ秒単位のタイムスタンプが含まれます。
Java アプリはメッセージを解析し、postgresql テーブルに保存します。このテーブルには、挿入の時間を自動的に取得するだけのフィールドも含まれています (デフォルトの now() を使用)。
イベントとデータベースへの記録の間の遅延を理解するために、イベント時間と挿入時間を比較しました。コンピュータB(WLAN接続を使用)では、遅延は約5ミリ秒で、完全に許容範囲内であることがわかりました。コンピュータAしかし、まったく同じソフトウェア スタックでも、この「遅延」は驚くほど長く、約 2 ~ 3 秒で、大きく異なります。さらに、挿入時間がイベント時間より前として記録される場合もありますが、これはあり得ないことであり、これは遅延の問題ではなく、postgresql の「now()」関数がコンピューターから取得する時間の問題であると考えられます。
使用http://time.is、私はコンピュータの時計の精度をチェックし、確かにコンピュータBでは、時間は「正確」に表示されますが、コンピュータA0.7 秒の差があることがわかります。また、時間を再同期しても変化はありません。その後、NetTime アプリケーションを使用して別の同期方法を使用したところ、クロックが 28 ミリ秒と報告され、数秒後に -1 秒ずれていることに気付きました。言い換えると、同期を行ったばかりですが、すぐに再び同期が外れ、遅すぎたり速すぎたりします。
私の主な懸念は、最初のコンピューターであるコンピューター A の時間差または遅延です。クロックの変動に関するこれらの観察と、ソフトウェア スタックが 100% 同一であるという事実を考慮すると、問題はコンピューター クロックにあると推測します。残念ながら、この仮定を検証する最善の方法はわかりません。また、私が正しいとしても、問題を解決する方法さえわかりません。コンピューター クロックがこのような動作を示すことは聞いたことがありません。しかし、これは別の原因で、私が間違ったウサギを追いかけている可能性がありますか? これは LAN 関連の問題である可能性がありますか? また、他に目立った問題がない場合は、それをどのように確認すればよいですか。
ご協力いただければ幸いです。