Sekunda przestępna

Na serwerze zauważyłem, że dwa procesy mysql pracują zużywając stanowczo więcej zasobów procesora niż zwykle. Z wykresów wynika, że problem rozpoczął się 1 lipca o godzinie 2:00. W logach zero błędów. Po podłączeniu się stracem dostałem:

# strace -p 6868 -tttt

1341226359.261640 futex(0x123c1d0, FUTEX_WAKE_PRIVATE, 1) = 0
1341226359.261703 futex(0x123c214, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 701273, {1341226360, 261694000}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
1341226359.261791 futex(0x123c1d0, FUTEX_WAKE_PRIVATE, 1) = 0
1341226359.261841 futex(0x123c214, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 701275, {1341226360, 261831000}, ffffffff) = -1 ETIMEDOUT (Connection timed out)
(…)

Okazało się, że winna jest sekunda przestępna. Rozwiązaniem problemu jest zatrzymanie serwera czasu, ustawienie czasu i włączenie serwera czasu. U mnie wyglądało to tak:

# invoke-rc.d ntp stop
# date -s "`date`"
# invoke-rc.d ntp start

Procesy mysql automatycznie wróciły do normy.

One thought to “Sekunda przestępna”

  1. Dzięki, pomogło na wzrost użycia CPU przez system i skok iRES ( Rescheduling interrupts ) do kilku milionów na minutę.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.