%3F.png)
Я наблюдаю очень странное поведение, источник которого мне сложно определить, но предполагаю, что это часы компьютера. Вот настройка и синопсис:
У меня в домашней сети два компьютера, подключенных к интернету через модем. Один (компьютер А) подключен через RJ45, другой (компьютер Б) через WLAN. Обе машины работают под управлением Windows 10, и на обеих машинах у меня абсолютно одинаковый стек для приложения: база данных Postgresql 13 и приложение Java.
Я использую приложение Java для мониторинга событий через веб-сокет, которые поступают каждые несколько миллисекунд. События публикуются на сервере в Интернете и содержат временную метку с точностью до миллисекунд.
Приложение Java анализирует сообщение и сохраняет его в таблице postgresql. Эта таблица также содержит поле, которое просто автоматически фиксирует время вставки (используя default now()).
Чтобы понять задержку между событием и записью в базу данных, я сравнил время события и время вставки.компьютер Б(который использует соединение WLAN), я обнаружил, что задержка составляет около 5 миллисекунд, что вполне приемлемо. Накомпьютер АОднако, с точно таким же программным стеком, эта "задержка" на удивление высока, около 2-3 секунд, и сильно варьируется. Более того, в некоторых случаях время вставки записывается как ДО времени события, что невозможно и заставляет меня думать, что это не проблема задержки, а проблема с тем, какое время функция "now()" в postgresql получает от компьютера.
С использованиемhttp://time.is, я проверил точность часов компьютера, и действительно накомпьютер Б, время отображается как «точное», тогда как накомпьютер Аон показывает разницу в 0,7 секунды. Повторная синхронизация времени также не имеет никакого значения. Затем я использовал приложение NetTime для использования другого метода синхронизации и заметил, что часы показывают разницу в 28 мс, а через несколько секунд они отстают на -1 секунду. Другими словами, хотя я только что выполнил синхронизацию, они почти сразу же снова рассинхронизировались и колеблются между слишком медленными и слишком быстрыми.
Меня больше всего беспокоит разница во времени или задержка на первом компьютере, компьютере A, и, учитывая эти наблюдения относительно изменчивости часов, а также тот факт, что программный стек на 100% идентичен, я предполагаю, что проблема заключается в часах компьютера. К сожалению, я не знаю, как лучше всего проверить это предположение, и если я прав, как вообще решить эту проблему, поскольку я никогда не слышал о том, чтобы компьютерные часы демонстрировали такое поведение. Но... может ли это быть что-то еще, и я гонюсь не за тем кроликом? Может ли это быть какая-то проблема, связанная с локальной сетью, и как мне это проверить, поскольку других заметных проблем нет.
Любая помощь будет высоко оценена.