Судя по вашим реакциям, вам понравились постмортемы инцидентов. Публикуем новый — на этот раз от Spotify.
16 апреля 2025 года в Spotify произошёл масштабный сбой, затронувший пользователей по всему миру. Команда сервиса рассказывает, что произошло и какие меры предприняли, чтобы избежать подобных ситуаций в будущем.
Далее со слов команды Spotify:
«Мы используем Envoy Proxy для периметровых сетевых систем. Периметр — это первый уровень ПО, который принимает трафик и распределяет его по другим сервисам. Для этого мы используем облачные регионы.
Чтобы расширить возможности Envoy, мы создаем кастомные фильтры. Например, фильтр для ограничения скорости (rate limiting).
В день инцидента мы изменили порядок применения фильтров Envoy. Это изменение посчитали низкорисковым, поэтому применили его сразу везде. Однако случился баг в одном из фильтров, что привело к аварийному завершению работы Envoy. Этот краш затронул все экземпляры Envoy одновременно.
Мгновенный перезапуск экземпляров Envoy и повторные попытки на стороне клиентских приложений создали всплеск нагрузки на периметр.
Этот внезапный рост трафика указал на ошибку в конфигурации: максимальный
heap size Envoy был установлен выше допустимого лимита памяти в Kubernetes. Из-за этого новые экземпляры Envoy при запуске получали огромный объём трафика, превышали лимит памяти Kubernetes, и Kubernetes автоматически их отключал. Этот цикл повторялся.Для устранения сбоя мы увеличили общую ёмкость периметровых серверов, что позволило снизить потребление памяти Envoy ниже лимитов Kubernetes и остановить бесконечный цикл перезапусков.
Вот что мы делаем для улучшения наших систем и предотвращения подобных инцидентов:
— Исправили баг, из-за которого Envoy аварийно завершал работу.
— Устранили несоответствие между размером кучи Envoy и лимитами памяти Kubernetes.
— Улучшим процесс внедрения изменений конфигурации на периметре.
— Усовершенствуем мониторинг, чтобы быстрее обнаруживать подобные проблемы»
Что думаете, коллеги? 🤔
@DevOpsKaz 😛
