Я запускаю производственный веб-сервер на Windows Server 2008. На этом сервере у меня есть база данных, в которой регистрируются определенные действия пользователя, но время от времени я необъяснимо получаю записи базы данных, которые, согласно идентификатору записи и записям непосредственно перед и после , имеют неправильное время регистрации для них (7 дней + слишком старые). Например, идентификатор записи 1001 будет для 7 декабря, 23:00, 1002 будет для 7 декабря, 23:01, затем 1003 будет для 28 ноября, 1:38, а затем снова вернется в нужное русло. Проблема, кажется, возникает в случайных записях (или 2-3 записях подряд) и возникает раз в несколько дней. Это абсолютно сбивает с толку, потому что в приложении есть только одно место, которое назначает это значение даты / времени, и это просто системная дата в формате UTC.
Я синхронизирую системное время с time-a.nist.gov (которое, как я читал в другой статье, было немного более надежным, чем время по умолчанию time.windows.com), и, похоже, время от времени все равно выходит из строя (3-4 минут), но я предполагаю, что иногда на сервере времени возникает временный сбой, когда дата меняется на резко неправильное значение в течение короткого промежутка времени, а затем возвращается обратно. Либо это, либо батарея часов материнской платы прикручена, и причина мгновенного изменения времени заключается в том, что материнская плата теряет время, а затем синхронизация времени возвращает его обратно.
Может ли одно из моих подозрений быть правдой? Должен ли я отключить синхронизацию времени для рабочего сервера? Присвоение дат журналу событий, где даты не превышают 2 недели до фактической даты, является серьезной проблемой, которую я не могу решить, когда выйдет следующая версия моего приложения. Любые предложения или советы будут оценены.
Найдите в системном журнале события 520 (событие «часы были изменены»). Это должно сказать вам, кто / что и когда меняет часы. Это должно, по крайней мере, помочь вам сузить круг вопросов.
Я не уверен, является ли синхронизация времени причиной вашей проблемы, но вместо того, чтобы полностью отключать синхронизацию времени, есть несколько отличных сторонних утилит для синхронизации времени. Мой личный фаворит - Тардис 2000. Одна из функций - «максимальная регулировка», которую вы можете установить на несколько минут (я обычно использую 5 минут) - это ограничивает количество, которое время может измениться за один раз. Однако на практике, как только Tardis 2000 привязан к источнику времени, он измеряет изменение системных часов и поддерживает их синхронизацию, точно настраивая тактовую частоту! Он даже отправит вам письмо по электронной почте, если он потеряет синхронизацию. Очень тщательная маленькая утилита SNTP.