Skip to main content

Лучшие практики настройки ограничений скорости API

Подход к ограничению скорости API на основе данных защищает ваш экземпляр GitHub Enterprise Server от чрезмерного использования без нарушения критически важных интеграций.

Кто может использовать эту функцию?

Site administrators can configure rate limits for a GitHub Enterprise Server instance.

О подходе, основанном на данных, к ограничениям скорости

Без ограничений по скорости одна интеграция CI, делающая десятки тысяч запросов в час, может замедлить работу всего вашего экземпляра для каждого пользователя. Но слишком агрессивное установление ограничений может разрушить интеграции, на которые полагаются ваши команды. Подход, основанный на данных, помогает найти правильный баланс — начните с наблюдения за реальными закономерностями использования, затем постепенно устанавливайте ограничения на основе собранных данных.

Подход следует следующим этапам:

  1.        **Наблюдайте**: Включите пересылку журналов и проанализируйте паттерны трафика API.
    
  2.        **Базовый уровень**: Включите лимиты скорости с высоким начальным значением для начала сбора данных о лимите ставки.
    
  3.        **Уточняйте**: корректируйте лимиты на основе наблюдаемого использования и общайтесь с затронутыми командами.
    
  4.        **Поддержание**: Постоянно отслеживайте и корректируйте лимиты со временем.
    

Для получения информации об включении ограничений тарифов через Консоль управления см. Настройка ограничений скорости.

Необходимые условия

Перед началом работы убедитесь, что у вас есть следующие ресурсы:

  • Администраторский доступ к Консоль управления
  • Доступ к конфигурации пересылки журналов
  • Возможность анализа централизованных логов
  • Понимание шаблонов использования API вашей организации и критически важных интеграций

Шаг 1: Включите переадресацию логов

Используйте пересылку журналов для централизации логов запросов API для мониторинга и анализа. Для получения дополнительной информации см. Пересылка журналов.

При анализе пересланных журналов сосредоточьтесь на следующих ключевых областях:

ПолеОписание
TimestampОтслеживание запросов
user / gh.actor.loginИдентифицирует пользователя или интеграцию, делающего запросы
path_info / gh.request.api.routeМаршрут API, к которому обращаются
statusHTTP-код ответа (например, 200 для успеха или 429 при ограничении скорости)
user_agentИдентифицирует клиента или интеграцию, отправляющую запрос

Перед введением лимитов тарифов проанализируйте общие тенденции использования, чтобы определить базовую оценку:

  •         **Определите топовых потребителей.** Найдите пользователей или интеграции, которые делают наибольшее количество запросов.
    
  •         **Ознакомьтесь с востребованными конечными устройствами.** Выделяйте маршруты API (`path_info`), которые получают наибольший трафик и могут получить выгоду от оптимизации.
    
  •         **Выявлять неэффективные закономерности.** Обращайте внимание на признаки интенсивного или неэффективного использования, например, частые опросы без кэширования или повторяющиеся запросы.
    

Эти исходные данные помогут вам устанавливать лимиты тарифов, основанные на фактическом использовании, а не на догадках.

Шаг 3: Включите лимиты ставок с высоким начальным значением

Когда будете готовы включить лимиты скорости, начните с высокого порога, чтобы собирать дополнительные данные, не нарушая существующие рабочие процессы.

  1. В Консоль управления установите основной лимит скорости API на высокое, например, 25 000 запросов в час. Для получения дополнительной информации см. Настройка ограничений скорости.

  2. После включения ограничений скорости следите за gh.rate_limit полями, которые появляются в ваших пересланных логах:

    ПолеОписание
    gh.rate_limit.primary.maxМаксимальное разрешенное количество запросов
    gh.rate_limit.primary.remainingОставшиеся запросы в текущий период
    gh.rate_limit.primary.usedЗапросы, уже сделанные за этот период
    gh.rate_limit.primary.resetВременная метка Unix при сбросе периода лимита скорости

Шаг 4: Уточняйте ограничения и решайте чрезмерное использование

Используйте данные из полей gh.rate_limit для принятия обоснованных решений:

  •         **Определите пользователей, приближающихся к пределу.** Найдите пользователей или интеграции, которые часто приближаются или превышают этот порог.
    
  •         **Определите соответствующие пределы.** Устанавливайте лимиты скорости на основе наблюдаемых тенденций использования, а не произвольных значений.
    
  •         **Общайтесь с затронутыми командами.** Работайте с командами над оптимизацией использования API с помощью таких методов, как пакетирование запросов, кэширование ответов и условные запросы.
    

Шаг 5: Сократите лимиты и поддерживайте их со временем

Когда у вас будет чёткое представление об использовании API, постепенно снижайте лимит скорости, чтобы он соответствовал ёмкости вашей инстанции и реальным моделям использования. Следите за нежелательными сбоями после каждой корредизации.

По мере уточнения ограничений работайте с командами, интеграции которых затронуты. Такие методы, как пакетирование запросов, кэш ответов и условные запросы, помогают командам сократить использование API. Вы также можете освободить конкретных пользователей от тарифных ограничений с помощью этой ghe-config утилиты. Для получения дополнительной информации см. Служебные программы командной строки.

Периодически проверяйте данные по лимиту тарифов, так как модели использования меняются по мере добавления новых интеграций и развития рабочих процессов.

Дополнительные рекомендации

  •         **Ограничения API GraphQL.** API GraphQL имеет отдельный лимит скорости (по умолчанию: 5 000 пунктов в час), который нельзя обойти через список освобождений. Для получения дополнительной информации см. [AUTOTITLE](/graphql/overview/rate-limits-and-node-limits-for-the-graphql-api).
    
  •         **Дополнительные лимиты скорости.** Вы также можете включить дополнительные тарифные лимиты для защиты общего уровня обслуживания. Для получения дополнительной информации см. [AUTOTITLE](/admin/configuring-settings/configuring-user-applications-for-your-enterprise/configuring-rate-limits#enabling-secondary-rate-limits).
    

Дополнительные материалы

  •         [автозаголовок](/rest/overview/rate-limits-for-the-rest-api)