Почему время выключения моего сервера EC2 составляет ~ 10 секунд каждый день?

12

У меня есть то, что я считаю системным файлом, /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 секунд. Угадай, часы просто бегут быстро! Благодарность!

УХО
источник
91.189.94.4 - это IP-адрес ntp.ubuntu.com
Майкл Мрозек
перейдите по этой ссылке. Ваша проблема будет решена. Это помогло решить ту же проблему. Docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html

Ответы:

13

Существует ряд факторов, которые могут заставить программные часы работать медленно или быстро. Часы на виртуальных серверах особенно подвержены целому классу этих проблем. 12 секунд в день - это очень плохо, пока вы не встретите виртуальные коробки с часами, которые работают на скорости 180–200%! Часы на ноутбуках, которые зависают, также могут страдать от проблем с хронометрированием.

Вы должны рассмотреть возможность отказа ntupdateв пользу ntpd. Имя пакета указано ntpв Debian (и, вероятно, в Ubuntu). Демон NTP поддерживает синхронизацию вашего времени намного более активно, чем задание cron, синхронизируется с одним или несколькими другими NTP-серверами и обеспечивает большую точность ваших часов. Это еще одна реализация того же протокола, который ntpdateиспользуется, за исключением постоянного ntpdмониторинга времени.

Если вам не нужны (очень маленькие) накладные расходы ntpd, вы можете подумать о том , чтобы запускаться ntpdateраз в час. Предполагая, что вы отключаетесь на 0,5 с каждый час, этого должно быть достаточно.

Алексиос
источник
3
Проблемы с виртуальной машиной также можно в значительной степени решить, запустив ядро ​​без галочки (CONFIG_NO_HZ). Не уверен, возможно ли это с ядром Ubuntu, или вам нужно собрать свое собственное.
Патрик
1
Я только что проверил конфигурацию ядра при установке Ubuntu 11 (3.0.0-14-generic), и он определенно CONFIG_NO_HZвключен.
Алексиос
0

Отвечая на другую половину вашего вопроса о том, почему это происходит: часы на компьютерном оборудовании общеизвестно неточны, поэтому, хотя отклонение в 12 секунд в день необычно, на самом деле это не так уж и необычно.

(Вероятно, это связано с преобладанием использования сетевого времени, так что смещение даже в 12 секунд в день является незначительным раздражением по сравнению с тем, что было бы в часах - и, таким образом, производители оборудования могут использовать дешевые чипы часов. С физической точки зрения происходит то, что генератор в вашей микросхеме тактовой частоты не откалиброван правильно, поэтому он работает немного, но надежно медленно.)

Брукс Моисей
источник
-1

Я подозреваю, что NTP не обновляет время вашего сервера, потому что разница слишком мала. У меня была похожая проблема, я видел одну и ту же задержку каждый день, пока не обнаружил, что из-за небольшой разницы ntp не будет обновляться, пока не появится определенный порог.

Проверьте свою конфигурацию для минимального порога для синхронизации.

Паткос Чаба
источник
3
Это неправда. Напротив, NTP пытается уменьшить разницу настолько, насколько это возможно. Существует порог в другом направлении: NTP не будет обновлять часы, если разница слишком велика (он подозревает неверную конфигурацию, например, неправильный часовой пояс).
Жиль "ТАК ... перестать быть злым"