Вчерашний пост о недавнем сбое GitHub упомянул деталь, которая была упущена: неправильно настроенная политика автоскейлинга на сервисе с насыщенным Istio sidecar. Политика отслеживала нагрузку на хост-сервис, но не пределы sidecar, что привело к невозможности правильного автоскейлинга.
Автоскейлинг регулирует ресурсы на основе текущей нагрузки. Хотя использование процессора является распространенной метрикой, сервисы могут стать насыщенными даже при низком использовании процессора. Например, модели потоков-на-запрос могут столкнуться с насыщением, когда задержка на downstream вызывает блокировку всех потоков на вводе-выводе, как это случилось с Slack в 2021 году.
Отчет GitHub предполагает, что политика автоскейлинга учитывала только нагрузку на уровне сервиса, игнорируя sidecar Istio. Это подчеркивает компонентную замену, определенную Дэвидом Вудз - сосредоточение только на исправлении отдельных компонентов, а не на понимании взаимодействий системы. Сбой включал несколько взаимодействующих факторов: изменяющиеся паттерны трафика, политику автоскейлинга, насыщение sidecar Istio, логику повторных попыток, насыщение узлов HAProxy и трафик аутентификации.
Ключевые сущности: Компании: GitHub, Slack | Люди: David Woods
Источник: Hacker News · Сводку подготовил HeadlinesBriefing