Dlaczego mój serwer EC2 ma wolne o ~ 10 sekund każdego dnia?

12

Mam plik, /etc/cron.daily/ntpupdatektóry moim zdaniem jest uruchamiany
ntpdate ntp.ubuntu.comcodziennie w celu synchronizacji z czasem sieciowym. Każdego dnia generuje wyniki bardzo podobne do tego:

/etc/cron.daily/ntpupdate:
16 Jan 06:30:42 ntpdate[21446]:
step time server 91.189.94.4 offset -12.646804 sec

Nie jestem 91.189.94.4pewien, co to oznacza, ale jestem prawie pewien -12.646804 sec, że mój serwer jest wyłączony o około 12 sekund. Ale nie wiem, dlaczego każdego dnia jest mniej więcej tyle samo. Jest to instancja Amazon EC2 z systemem Ubuntu.

Mogę tylko zgadywać, że albo traci / zyskuje 12 sekund dziennie, albo coś innego synchronizuje czas z innym zegarem, który jest wyłączony o 12 sekund, a następnie go ponownie synchronizuję.

Co powinienem zrobić, aby spróbować to wyśledzić? Nie widzę żadnych innych zadań cron w /etc/cron.*katalogach ani w zadaniach cron użytkowników ...

AKTUALIZACJA

Pomyślałem, że podzielę się tym, że zacząłem biegać co godzinę, aby sprawdzić, czy nastąpi skok o określonej godzinie. Oto co godzinowe wyjście:

16 Jan 15:17:04 ntpdate[8346]:
adjust time server 91.189.94.4 offset -0.464418 sec

Najwyraźniej co godzinę zegar wyłącza się o około pół sekundy, więc ma to sens, że każdego dnia (24 godziny) zegar był wyłączany o około 12 sekund. Zgadnij, że zegar po prostu działa szybko! Dzięki!

cwd
źródło
91.189.94.4 to adres IP ntp.ubuntu.com
Michael Mrozek
Śledź ten link. Twój problem zostanie rozwiązany. Pomogło rozwiązać ten sam problem docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html

Odpowiedzi:

13

Istnieje wiele czynników, które mogą powodować, że zegar oprogramowania działa wolno lub szybko. Zegary na serwerach wirtualnych są szczególnie podatne na całą klasę tych problemów. 12 sekund dziennie jest dość kiepskie, dopóki nie natkniesz się na wirtualne skrzynki z zegarami, które działają z prędkością 180–200%! Zegary na laptopach, które zawieszają się, mogą również cierpieć z powodu problemów z czasem.

Powinieneś rozważyć rezygnację ntupdatena korzyść ntpd. Nazwa pakietu znajduje się ntpna Debianie (i prawdopodobnie także na Ubuntu). Demon NTP utrzymuje twoją synchronizację czasu o wiele bardziej proaktywnie niż zadanie crona, synchronizując się z jednym lub kilkoma innymi serwerami NTP i utrzymując zegar o wiele dokładniejszy. Jest to kolejna implementacja tego samego protokołu ntpdate, z wyjątkiem tego, ntpdże stale monitoruje czas.

Jeśli nie chcesz (bardzo małego) obciążenia ntpd, możesz rozważyć uruchomienie ntpdateraz na godzinę. Zakładając, że masz 0,5 sekundy przerwy co godzinę, powinno to wystarczyć.

Alexios
źródło
3
Problemy z maszyną wirtualną można również w dużej mierze rozwiązać, uruchamiając bezczynne jądro (CONFIG_NO_HZ). Nie jestem pewien, czy jest to możliwe w przypadku jądra Ubuntu, czy też trzeba będzie zbudować własne.
Patrick,
1
Właśnie sprawdziłem konfigurację jądra w instalacji Ubuntu 11 (3.0.0-14-generic) i na pewno się włączyła CONFIG_NO_HZ.
Alexios
0

Odpowiadając na drugą połowę pytania, dlaczego tak się dzieje: zegary sprzętu komputerowego są notorycznie niedokładne, więc chociaż przesunięcie o 12 sekund dziennie jest niezwykłe, nie jest wcale takie niezwykłe.

(Prawdopodobnie wynika to z częstości korzystania z czasu sieciowego, dlatego przesunięcie nawet o 12 sekund dziennie jest niewielką uciążliwością w porównaniu do tego, co byłoby w zegarku - a zatem firmy sprzętowe mogą używać tanich układów zegarowych. Fizycznie dzieje się tak, że oscylator w układzie zegarowym nie jest dokładnie skalibrowany, więc działa nieco, ale niezawodnie.)

Brooks Moses
źródło
-1

Podejrzewam, że ntp nie aktualizuje czasu twojego serwera, ponieważ różnica jest zbyt mała. Miałem podobny problem, widziałem to samo opóźnienie każdego dnia, dopóki nie dowiedziałem się, że niewielka różnica ntp nie będzie aktualizowana, dopóki nie zostanie określony określony próg.

Sprawdź konfigurację dla minimalnego progu synchronizacji.

Patkos Csaba
źródło
3
To nie jest prawda. Wręcz przeciwnie, NTP stara się maksymalnie zmniejszyć różnicę. Istnieje próg w przeciwnym kierunku: NTP nie zaktualizuje zegara, jeśli różnica jest zbyt duża (podejrzewa błędną konfigurację, np. Niewłaściwą strefę czasową).
Gilles „SO- przestań być zły”