17 августа сервисы GitHub существенно деградировали в течение нескольких часов, затронув производительность миллионов разработчиков по всему миру. На пике сбоя уровень ошибок веб-интерфейса и API GitHub достиг примерно 20%, а загрузка архивов и сырого контента — около 50%.
Большинство сервисов восстановилось примерно за три часа, но GitHub Actions и Copilot Token Service оставались нестабильными дольше. В целом сбой продлился почти восемь часов, затронув GitHub.com, Issues, Pull Requests, API, Actions, Copilot и несколько служб аутентификации. Сегодня GitHub опубликовал подробный анализ первопричин (RCA) этого крупного сбоя.
- Сбой начался после того, как балансировщики нагрузки в центральном дата-центре GitHub в США насытились из-за нового пика трафика. Pod бокового контейнера Istio достиг своего лимита конкурентности, но не смог корректно масштабироваться, поскольку его политика автоскалирования отслеживала хост-сервис без учета лимитов бокового контейнера.
- Отказ распространился каскадно, пока четыре узла HAProxy не исчерпали свои лимиты потоков. Поскольку эти узлы участвовали в пути шлюзовой аутентификации GitHub, запросы аутентификации начали замедляться или давать сбой. Логика повторных попыток GitHub затем усугубила ситуацию, отправляя дополнительный трафик на уже перегруженные внутренние балансировщики нагрузки.
- GitHub перенаправил часть трафика в Северную Виргинию, но там возникла другая проблема. Задержка ответов от внутренней конечной точки выявила скрытую ошибку повторных попыток в VS Code, из-за которой трафик аутентификации Copilot резко возрос.
- Copilot Token Service обычно обрабатывает от 7 000 до 9 000 запросов в секунду. Во время инцидента этот показатель вырос до 70 000–100 000 запросов в секунду, поскольку неудачные запросы вызывали дополнительные повторные попытки, иногда попадая в бесконечные циклы.
- В конечном итоге GitHub стабилизировал сервис, сократив количество повторных попыток на шлюзе, временно заблокировав определенные запросы токенов с ответами HTTP 403 и постепенно восстанавливая трафик.
На основе полученных выводов команда GitHub планирует исправить политики автоскалирования, провести аудит лимитов емкости Istio, пересмотреть поведение повторных попыток и задержек, устранить ошибку повторных попыток в VS Code, а также улучшить мониторинг балансировщиков нагрузки и механизмы регионального переключения при сбоях.
За последние несколько месяцев GitHub столкнулся с рядом проблем с надежностью. Ранее в этом году GitHub упоминал, что стремительный рост ИИ-кодинга создает беспрецедентную нагрузку на его инфраструктуру, вынуждая отдавать приоритет доступности и емкости, а не новым функциям. Чтобы удовлетворить растущий спрос, Microsoft даже готовилась арендовать вычислительные мощности у своего главного конкурента — Amazon Web Services.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Pradeep Viswanathan




