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

Я не сделал сравнительного теста, но я вижу несколько потенциальных улучшений.

Вы открываете и закрываете файл для каждого вызова к date. Это - отходы: просто поместите перенаправление вокруг целого цикла.

while …; do …; done >"$file"

Вы выполняете отдельные вызовы к date для каждой строки. Unix способен называть внешние программы быстро, но внутренний еще лучше. Дата GNU имеет опцию пакета: подайте его даты на стандартном входе и нем структурные распечатки программы их. Кроме того, для перечисления диапазона целых чисел использовать seq, это, вероятно, будет быстрее, чем интерпретация цикла в оболочке.

seq -f @%12.0f $secBeg $secEnd | date -f - '+%Y-%m-%d %H:%M:%S' >"$file"
cnt=$(($secY2 + 1))

Вообще говоря, если Ваш сценарий оболочки является слишком медленным, попытайтесь выполнить внутренний цикл в специализированной утилите — здесь seq и date, но часто sed или awk. Если Вы не можете управлять этим, переключиться на более усовершенствованный язык сценариев, такой как Perl или Python (но специализированные утилиты обычно быстрее при установке их вариантам использования).

12
16.01.2012, 23:09
3 ответа

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

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

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

13
27.01.2020, 19:56
  • 1
    Вопросы виртуальной машины могут также быть в основном решены путем выполнения ядра без галочки (CONFIG_NO_HZ). Не уверенный, если бы это возможно с ядром человечности, или если необходимо было бы создать собственное. –  Patrick 16.01.2012, 16:53
  • 2
    я просто проверил конфигурацию ядра на (3.0.0-14-универсальной) установке Ubuntu 11, и это определенно, имеет CONFIG_NO_HZ включенный. –  Alexios 16.01.2012, 17:33

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

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

0
27.01.2020, 19:56

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

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

-1
27.01.2020, 19:56
  • 1
    Это не верно. Наоборот, NTP пытается уменьшить различие так, как это может. В другом направлении существует порог: NTP не обновит часы, если различия будут слишком значительными (это подозревает неверную конфигурацию, например, неправильный часовой пояс). –  Gilles 'SO- stop being evil' 16.01.2012, 21:48

Теги

Похожие вопросы