Views Comments Previous Next Search

Перевод атомных часов на одну секунду вызвал сбой серверных приложений

0722
НаписалОксана Бум3 июля 2012
0722

В полночь с 30 июня на 1 июля с целью синхронизации с астрономическим временем Земли эталонные мировые атомные часы были приостановлены на одну секунду, таким образом в последней минуте оказалось 61 секунда, а на некоторых часах можно было наблюдать волшебное время "23:59:60" или два раза по "23:59:59". Подобный шаг привёл к непредвиденному коллапсу многих приложений и сервисов. Проблема была вызвана зацикливанием из-за неготовности обработать появление лишней секунды. В большинстве систем, на которых проявилась проблема, была настроена синхронизация точного времени по NTP. В итоге, испытывали проблемы с работой некоторые сайты (в том числе Reddit, LinkedIn и Mozilla), наблюдалось массовое зависание серверных приложений (в основном приложения работающие в Java VM, такие как Hadoop и Cassandra), начинала съедать все процессорные ресурсы СУБД MySQL, отключились VPN-туннели на базе OpеnVPN, зависали Linux-серверы. В большинстве случаев администраторы были вынуждены перезапустить зависшие серверы. Тем не менее, для стабилизации некоторых приложений, начавших потреблять излишние ресурсы CPU, достаточно было вручную выставить корректное время через команду "date `date +"%m%d%H%M%C%y.%S"`". Для некоторых систем мог дополнительно потребоваться останов ntpd на время выполнения данной команды и перезапуск пожирающих CPU приложений. Интересно, что в системе отслеживания ошибок Red Hat информация о возможной проблеме была опубликована ещё в 2009 году и исправлена в RHEL 5.4 (дополнительно было опубликовано уведомление, что RHEL не подвержен проблеме). В марте 2012 года в ядре Linux была выявлена и[forbidden link] проблема с зависанием при появлении лишней секунды на некоторых системах с таймером высокого разрешения (когда ntpd вызывал adjtimex в ядре оставалась неубранной блокировка). О зависании Linux-серверов в основном сообщают пользователи систем с необновлённым ванильным ядром, собранным вручную, а также пользователи штатных пакетов с Linux ядрами 2.6.32, 3.1 и 3.2 из состава Debian GNU/Linux. При этом, добавление лишней секунды для синхронизации времени с периодом вращения земли производится не в первый раз, прошлое прибавление состоялось 31 декабря 2008 года и обошлось без глобальных проблем. В прошлом году внимание к проблеме пыталась поднять компания Google, поделившись своим методом устранения негативного эффекта - разбиением лишней секунды на большой интервал корректировки, с прибавлением каждый раз по миллисекунде, что приведёт к плавному размыванию секунды по большому отрезку времени. Похожее готовое практическое решение (скрипт для плавного прибавления секунды) месяц назад опубликовал один из разработчиков Opera.

Рассказать друзьям
0 комментариевпожаловаться

Комментарии

Подписаться
Комментарии загружаются