О подходе, основанном на данных, к ограничениям скорости
Без ограничений по скорости одна интеграция CI, делающая десятки тысяч запросов в час, может замедлить работу всего вашего экземпляра для каждого пользователя. Но слишком агрессивное установление ограничений может разрушить интеграции, на которые полагаются ваши команды. Подход, основанный на данных, помогает найти правильный баланс — начните с наблюдения за реальными закономерностями использования, затем постепенно устанавливайте ограничения на основе собранных данных.
Подход следует следующим этапам:
-
**Наблюдайте**: Включите пересылку журналов и проанализируйте паттерны трафика API. -
**Базовый уровень**: Включите лимиты скорости с высоким начальным значением для начала сбора данных о лимите ставки. -
**Уточняйте**: корректируйте лимиты на основе наблюдаемого использования и общайтесь с затронутыми командами. -
**Поддержание**: Постоянно отслеживайте и корректируйте лимиты со временем.
Для получения информации об включении ограничений тарифов через Консоль управления см. Настройка ограничений скорости.
Необходимые условия
Перед началом работы убедитесь, что у вас есть следующие ресурсы:
- Администраторский доступ к Консоль управления
- Доступ к конфигурации пересылки журналов
- Возможность анализа централизованных логов
- Понимание шаблонов использования API вашей организации и критически важных интеграций
Шаг 1: Включите переадресацию логов
Используйте пересылку журналов для централизации логов запросов API для мониторинга и анализа. Для получения дополнительной информации см. Пересылка журналов.
При анализе пересланных журналов сосредоточьтесь на следующих ключевых областях:
| Поле | Описание |
|---|---|
Timestamp | Отслеживание запросов |
user / gh.actor.login | Идентифицирует пользователя или интеграцию, делающего запросы |
path_info / gh.request.api.route | Маршрут API, к которому обращаются |
status | HTTP-код ответа (например, 200 для успеха или 429 при ограничении скорости) |
user_agent | Идентифицирует клиента или интеграцию, отправляющую запрос |
Шаг 2: Проанализируйте тенденции API до включения лимитов
Перед введением лимитов тарифов проанализируйте общие тенденции использования, чтобы определить базовую оценку:
-
**Определите топовых потребителей.** Найдите пользователей или интеграции, которые делают наибольшее количество запросов. -
**Ознакомьтесь с востребованными конечными устройствами.** Выделяйте маршруты API (`path_info`), которые получают наибольший трафик и могут получить выгоду от оптимизации. -
**Выявлять неэффективные закономерности.** Обращайте внимание на признаки интенсивного или неэффективного использования, например, частые опросы без кэширования или повторяющиеся запросы.
Эти исходные данные помогут вам устанавливать лимиты тарифов, основанные на фактическом использовании, а не на догадках.
Шаг 3: Включите лимиты ставок с высоким начальным значением
Когда будете готовы включить лимиты скорости, начните с высокого порога, чтобы собирать дополнительные данные, не нарушая существующие рабочие процессы.
-
В Консоль управления установите основной лимит скорости API на высокое, например, 25 000 запросов в час. Для получения дополнительной информации см. Настройка ограничений скорости.
-
После включения ограничений скорости следите за
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)