11 августа 2016 года Reddit не был доступен в период с 05:24 до 06:52, а в период с 06:52 до 08:19 имел проблемы с производительностью. Проблема затронула все официальные платформы Reddit и API, обслуживающие сторонние приложения. Простой был вызван ошибкой, возникшей во время миграции критической составляющей бэкенда. В результате инцидента данные потеряны не были.
Причина ошибки. Reddit использует Zookeeper для мониторинга работы серверов. Также используется система автомасштабирования для обеспечения необходимого числа серверов, зависящего от нагрузки на систему.
Часть обновлений инфраструктуры включала в себя миграцию Zookeeper на более современную платформу, внутри облаков Amazon. Так как система автомасштабирования получает данные напрямую из Zookeeper, то на время миграции она была отключена, чтобы у нее не возникало путаницы в том, какие сервера должны быть доступны. Однако, в 05:23 система была неожиданно запущена менеджером пакетов, заметившим ручное изменение конфигурации. За 16 секунд запущенная система, выполнив чтение данных частично перенесенного Zookeeper, отключила множество серверов, обслуживающих основной сайт, API и системы кэширования.
Исправление проблемы. В 05:24 было замечено, что серверы отключены. В 05:47 сайт был переведен в "нерабочее состояние", чтобы восстановить работу всех серверов. К 06:42 сервера были запущены. Однако все кэши в это время были пусты, что привело к увеличению нагрузки на базы данных и, как следствие, к снижению производительности. В 08:19 время отклика было в норме и все системы работали нормально.
Профилактика. Модернизация инфраструктуры будет порождать различные типы миграции серверов. Так как вышеописанный сбой был связан с уникальной и выскорисковой миграцией, то специалисты Reddit не предполагают, что имевшая место комбинация сбоев в будущем в точности повторится. Однако, они определили следующие несколько улучшений, которые должны повысить общую устойчивость системы к ошибкам, возникающих при критических миграциях:
- сделали систему автомасштабирования менее агрессивной, уменьшив количество серверов, которые она может единомоментно остановить;
- увеличили команду инженеров, выполняющих критические операции до двух человек;
- реализовали корректную остановку менеджера пакетов, чтобы избежать неожиданного запуска сервисов в будущем.
В заключение. Компания Reddit принесла извинения за вызванные перебои в работе сайта, сообщив также, что завершилась большая веха в процессе миграции, позволяющая ускорить как производительность самого сайта, так и процесс его разработки.