Mam plik, /etc/cron.daily/ntpupdate
który moim zdaniem jest uruchamiany
ntpdate ntp.ubuntu.com
codziennie 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.4
pewien, 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!
Odpowiedzi:
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ę
ntupdate
na korzyśćntpd
. Nazwa pakietu znajduje sięntp
na 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łuntpdate
, z wyjątkiem tego,ntpd
że stale monitoruje czas.Jeśli nie chcesz (bardzo małego) obciążenia
ntpd
, możesz rozważyć uruchomienientpdate
raz na godzinę. Zakładając, że masz 0,5 sekundy przerwy co godzinę, powinno to wystarczyć.źródło
CONFIG_NO_HZ
.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.)
źródło
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.
źródło