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

1/07/2012 10:06

В полночь с 30 июня на 1 июля с целью синхронизации с астрономическим временем Земли эталонные мировые атомные часы были приостановлены на одну секунду. Иными словами в последней минуте оказалось 61 секунда, а на некоторых часах можно было наблюдать волшебное время "23:59:60". Подобный шаг привёл к непредвиденной реакции некоторых приложений и сервисов. Проблема была вызвана зацикливанием из-за неготовности обработать появление лишней секунды, в некоторых системах, на которых проявилась проблема, была настроена синхронизация точного времени по NTP. В итоге, испытывали проблемы с работой некоторые сайты (в их числе Reddit, LinkedIn и Mozilla), наблюдалось остановка работы различных серверных приложений (в основном приложения работающие в Java VM, такие как Hadoop и Cassandra). Сбой СУБД MySQL приводил к исчерпанию процессорных ресурсов, отключились VPN-туннели на базе OpеnVPN, останавливали работу Linux-сервера с вручную собранным ядром. Одним из наиболее результативных способов обойти сбой, был вынужденный перезапуск зависших серверов. Тем не менее, для стабилизации некоторых приложений достаточно было вручную выставить корректное время через команду "date", а для некоторых систем мог дополнительное потребоваться остановка ntpd на время выполнения данной команды и перезапуск зависших приложений. Интересно, что в системе отслеживания ошибок Red Hat информация о возможной проблеме была опубликована ещё в 2009 году и исправлена в RHEL 5.4 (дополнительно было опубликовано уведомление, что RHEL не подвержен проблеме). В марте в ядре Linux была выявлена и исправлена проблема с зависанием при появлении лишней секунды на некоторых системах с таймером высокого разрешения. При этом, добавление лишней секунды для синхронизации времени с периодом вращения земли производится не в первый раз, прошлое прибавление состоялось 31 декабря 2008 года и обошлось без глобальных проблем. В прошлом году внимание к проблеме также пыталась поднять компания Google, поделившись своим методом ухода от проблемы - разбиение лишней секунды на большой интервал корректировки, с прибавлением каждый раз по миллисекунде.
Источник