Pull to refresh

GitHub объяснил причину сбоев в марте

Reading time 2 min
Views 2.2K

GitHub объяснил перебои с работой 16, 17, 22 и 23 марта. Как заявили представители платформы, сбои были вызваны проблемами «конфликта ресурсов» с их основным кластером MySQL под названием «MySQL1». Проблема повлияла на производительность большого количества сервисов и функций GitHub.

Конкуренция за ресурсы — это когда нескольким процессам/запросам требуются одни и те же ресурсы, будь то память, ЦП, использование диска или даже доступ к таблице базы данных. Когда доступных ресурсов недостаточно, БД не сможет выполнять запросы быстро, что приводит к блокировке таблиц и быстрому накоплению подключений, которые ожидают завершения запросов. В итоге достигается максимальное количество подключений, и все дальнейшие запросы отклоняются. Это приводит к сбою любых служб, которым требуется доступ к базе данных.

16 марта на GitHub наблюдалась повышенная нагрузка в часы пик, и не работали все операции записи, в том числе операции git, запросы API, пакеты GitHub, GitHub Codespaces, GitHub Actions, службы GitHub Pages и т.д.

Следующий сбой произошел 17 марта. После обнаружения проблемы и переключения на другие серверы платформе удалось наладить работу.

22 марта в GitHub применили меры по снижению производительности запросов и включили профилирование памяти на прокси-сервере своей базы данных. 

23 марта повышенная нагрузка снова привела к сбою клиентских подключений. Чтобы решить эти проблемы, GitHub решил ограничить трафик веб-перехватчиков, снижая таким образом нагрузку на свои серверы.

Чтобы предотвратить такие сбои в будущем, платформа проверяет свои системы в часы пик и будет создавать исправления производительности на основе результатов проверки. Одновременно трафик перенаправляется на другую базу данных, чтобы снизить нагрузку, а также нарастить инфраструктуру и сегментировать ее для повышения производительности.

Разделение базы данных — это разбиение больших таблиц на несколько более мелких, которые затем можно хранить на нескольких серверах. Разбивая часто используемую и большую базу данных на несколько меньших на разных серверах, можно повысить производительность и предотвратить блокировку интенсивными запросами.

GitHub обещает в следующем отчете поделиться более подробной информацией о работе по предотвращению сбоев.

Tags:
Hubs:
+9
Comments 1
Comments Comments 1

Other news