У меня есть то, что я считаю системным файлом, /etc/cron.daily/ntpupdate
который запускается
ntpdate ntp.ubuntu.com
ежедневно для синхронизации с сетевым временем. Каждый день он генерирует вывод, очень похожий на этот:
/etc/cron.daily/ntpupdate:
16 Jan 06:30:42 ntpdate[21446]:
step time server 91.189.94.4 offset -12.646804 sec
Я не уверен, что это 91.189.94.4
значит, но я уверен, -12.646804 sec
что мой сервер выключен примерно на 12 секунд. Но я не знаю, почему это каждый день примерно одинаково. Это экземпляр Amazon EC2 под управлением Ubuntu.
Я могу только догадываться, что он либо теряет / набирает 12 секунд в день, либо что-то еще синхронизирует время с другими часами, которые выключены на 12 секунд, а затем я его заново синхронизирую.
Что я должен сделать, чтобы попытаться отследить это дальше? Я не вижу других заданий cron в /etc/cron.*
каталогах или заданиях пользователей cron ...
ОБНОВИТЬ
Просто подумал, что поделюсь, что я начал бегать каждый час, чтобы увидеть, будет ли большой скачок в определенный час. Вот что такое почасовой вывод:
16 Jan 15:17:04 ntpdate[8346]:
adjust time server 91.189.94.4 offset -0.464418 sec
Очевидно, что каждый час часы выключаются примерно на полсекунды, поэтому имеет смысл, что каждый день (24 часа) часы будут выключены примерно на 12 секунд. Угадай, часы просто бегут быстро! Благодарность!
Ответы:
Существует ряд факторов, которые могут заставить программные часы работать медленно или быстро. Часы на виртуальных серверах особенно подвержены целому классу этих проблем. 12 секунд в день - это очень плохо, пока вы не встретите виртуальные коробки с часами, которые работают на скорости 180–200%! Часы на ноутбуках, которые зависают, также могут страдать от проблем с хронометрированием.
Вы должны рассмотреть возможность отказа
ntupdate
в пользуntpd
. Имя пакета указаноntp
в Debian (и, вероятно, в Ubuntu). Демон NTP поддерживает синхронизацию вашего времени намного более активно, чем задание cron, синхронизируется с одним или несколькими другими NTP-серверами и обеспечивает большую точность ваших часов. Это еще одна реализация того же протокола, которыйntpdate
используется, за исключением постоянногоntpd
мониторинга времени.Если вам не нужны (очень маленькие) накладные расходы
ntpd
, вы можете подумать о том , чтобы запускатьсяntpdate
раз в час. Предполагая, что вы отключаетесь на 0,5 с каждый час, этого должно быть достаточно.источник
CONFIG_NO_HZ
включен.Отвечая на другую половину вашего вопроса о том, почему это происходит: часы на компьютерном оборудовании общеизвестно неточны, поэтому, хотя отклонение в 12 секунд в день необычно, на самом деле это не так уж и необычно.
(Вероятно, это связано с преобладанием использования сетевого времени, так что смещение даже в 12 секунд в день является незначительным раздражением по сравнению с тем, что было бы в часах - и, таким образом, производители оборудования могут использовать дешевые чипы часов. С физической точки зрения происходит то, что генератор в вашей микросхеме тактовой частоты не откалиброван правильно, поэтому он работает немного, но надежно медленно.)
источник
Я подозреваю, что NTP не обновляет время вашего сервера, потому что разница слишком мала. У меня была похожая проблема, я видел одну и ту же задержку каждый день, пока не обнаружил, что из-за небольшой разницы ntp не будет обновляться, пока не появится определенный порог.
Проверьте свою конфигурацию для минимального порога для синхронизации.
источник