Троттлинг: что это такое простыми словами

Троттлинг: что это такое простыми словами Полезное

Троттлинг (throttling) — это принудительное ограничение скорости работы системы, чтобы не выйти за безопасный предел. Слово встречается в двух разных областях, и их важно не путать: в веб-разработке троттлинг — это ограничение числа запросов к сервису за единицу времени (rate limiting), а в теме железа троттлинг — это автоматический сброс частоты процессора при перегреве. Ниже разберу оба значения: чем они отличаются, как работают, как это увидеть и настроить, с кодом и примерами.

Два значения слова «троттлинг»

Термин пришел из английского throttle — «душить», «дросселировать», сдерживать поток. Отсюда общая идея: система намеренно замедляет саму себя, когда иначе что-то сломается или будет злоупотребление ресурсом.

Из-за одинакового названия новички смешивают два совершенно разных механизма. Чтобы этого не было, сведу их в таблицу.

Признак Rate limiting (сеть, API) Тепловой троттлинг (железо)
Что ограничивают Количество запросов за интервал Тактовую частоту процессора/видеокарты
Причина Защита сервиса от перегрузки и злоупотреблений Защита кристалла от перегрева
Кто включает Разработчик, настройки сервера/API Микрокод CPU/GPU, автоматически
Где встречается Бэкенд, публичные API, шлюзы Ноутбуки, ПК, смартфоны
Типичный признак Ответ HTTP 429 Too Many Requests Падение FPS, гул кулеров, просадка частот

Дальше разберу каждое значение отдельно.

Троттлинг как rate limiting: ограничение частоты запросов

Rate limiting — это правило вида «не больше N запросов за интервал T от одного клиента». Так публичные API и сайты защищаются от перегрузки, ботов и случайных циклов, которые шлют тысячи запросов в секунду.

Когда лимит превышен, сервер обычно отвечает кодом 429 Too Many Requests и часто присылает заголовок Retry-After — через сколько секунд можно повторить. Это стандартное поведение у GitHub API, Telegram Bot API, X (Twitter) и большинства крупных сервисов.

Типичная ошибка новичка: цикл без пауз

Покажу тройкой: неверный код, что он выдает, и исправление.

Неверный код — шлем запросы в лоб, без ограничения:

import requests

for page in range(1, 200):
    r = requests.get(f"https://api.github.com/users/octocat/repos?page={page}")
    print(page, r.status_code)

Фактический вывод (сокращенно) — сервис быстро отдает 429 и перестает отвечать полезными данными:

1 200
2 200
3 403
4 403

GitHub при превышении лимита без токена возвращает даже 403, а с токеном — 429; в обоих случаях в заголовках приходит момент сброса лимита. Игнорировать это нельзя: дальнейшие запросы бесполезны.

Исправление — уважать лимит и ждать столько, сколько просит сервер:

import time
import requests

def get_with_retry(url, tries=5):
    for attempt in range(tries):
        r = requests.get(url)
        if r.status_code != 429:
            return r
        wait = int(r.headers.get("Retry-After", 2))
        print(f"429, жду {wait} c")
        time.sleep(wait)
    return r

r = get_with_retry("https://api.github.com/users/octocat/repos")
print(r.status_code)

Вывод при срабатывании лимита:

429, жду 2 c
200

Как rate limiting устроен внутри

Чаще всего применяют алгоритм «токен-бакет» (token bucket): у клиента есть «ведро» на N токенов, каждый запрос забирает токен, а токены доливаются с постоянной скоростью. Есть токен — запрос проходит, ведро пусто — отказ.

import time

class TokenBucket:
    def __init__(self, capacity, refill_per_sec):
        self.capacity = capacity
        self.tokens = capacity
        self.refill = refill_per_sec
        self.last = time.monotonic()

    def allow(self):
        now = time.monotonic()
        self.tokens = min(self.capacity, self.tokens + (now - self.last) * self.refill)
        self.last = now
        if self.tokens >= 1:
            self.tokens -= 1
            return True
        return False

bucket = TokenBucket(capacity=3, refill_per_sec=1)
for i in range(5):
    print(i, "ok" if bucket.allow() else "отказ 429")

Фактический вывод — первые три запроса проходят, дальше отказ, пока не накопятся токены:

0 ok
1 ok
2 ok
3 отказ 429
4 отказ 429

На практике вы редко пишете это руками: лимит настраивается на уровне веб-сервера или шлюза. Например, в Nginx одной директивой:

limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;

location /api/ {
    limit_req zone=api burst=20 nodelay;
}

Здесь rate=10r/s — десять запросов в секунду с одного IP, burst=20 — допустимый короткий всплеск. Похожие механизмы есть в API Gateway облаков, в библиотеках вроде slowapi для FastAPI и в самих сервисах.

Тепловой троттлинг: защита процессора от перегрева

Тепловой троттлинг (CPU/GPU throttling) — это автоматический сброс тактовой частоты процессора или видеокарты, когда температура подходит к критической. Чип намеренно снижает производительность, чтобы остыть и не деградировать.

Порог задан производителем. У современных процессоров Intel это Tjmax около 100 °C, у AMD Ryzen серий 7000 и 9000 — тоже около 95 °C, причем высокая температура под нагрузкой у них штатная, а не поломка. У видеокарт NVIDIA и AMD пороги свои, обычно в районе 83-90 °C.

Как понять, что процессор троттлит

Признаки на практике:

  • Внезапные «тормоза»: в игре проседает FPS, тяжелая программа подвисает, хотя минуту назад все летало.
  • Резкое падение частоты под нагрузкой — видно в мониторинге.
  • Гул кулеров: вентиляторы выходят на максимум, особенно заметно на ноутбуках.

Точно подтвердить троттлинг можно только замером. Актуальные на 2026 год бесплатные инструменты — HWiNFO64 (подробный мониторинг с флагом Thermal Throttling), CPU-Z (частоты), для видеокарт MSI Afterburner. AIDA64 тоже умеет это, но платная, с триалом.

В HWiNFO64 при перегреве загорается отдельный датчик Thermal Throttling со значением Yes — это и есть однозначное подтверждение, а не косвенная догадка по «тормозам».

Можно ли отключить тепловой троттлинг

Технически некоторые параметры доступны: в BIOS/UEFI меняют лимиты питания (PL1/PL2 у Intel) и температурные пороги, для процессоров Intel есть утилита ThrottleStop. Но полностью убрать защиту нельзя, и это не стоит делать.

Троттлинг — последняя страховка перед аварийным выключением. Если чип упрется в предел без него, следующий шаг — принудительное отключение, а при длительном перегреве деградация кристалла. Правильный путь — не отключать защиту, а убирать причину перегрева: чистить пыль, менять термопасту, улучшать обдув, снижать напряжение (андервольтинг).

Выводы

  • Троттлинг — это намеренное самоограничение системы ради безопасности; слово означает две разные вещи, и их нельзя смешивать.
  • В вебе троттлинг — это rate limiting: ограничение числа запросов за интервал. Признак срабатывания — ответ HTTP 429 Too Many Requests с заголовком Retry-After.
  • Правильная реакция на 429 — не долбить сервер, а ждать указанное время и повторять; типовой механизм лимита — алгоритм token bucket, а на проде его чаще настраивают на веб-сервере (например, limit_req в Nginx).
  • В железе троттлинг — тепловая защита: процессор сбрасывает частоту у критической температуры (у Intel около 100 °C, у AMD Ryzen 7000/9000 около 95 °C — это норма).
  • Подтверждать тепловой троттлинг нужно замером (HWiNFO64, флаг Thermal Throttling), а не по ощущению «тормозов».
  • Отключать тепловую защиту не нужно и опасно: лечить надо причину перегрева — пыль, термопасту, охлаждение.

Где применяется / связь с практикой

Освойте тему на практике

Rate limiting — обязательная часть любого нагруженного бэкенда: без него один клиент способен положить сервис, а публичные API станут мишенью для ботов. Проектирование таких ограничений, выбор алгоритма и настройка шлюзов — это тема высоконагруженных систем. Разобрать ее системно можно на курсе highload, где лимиты идут в связке с кэшированием, очередями и масштабированием.

Освойте тему на практике

Если пока хочется просто понять уровень и формат обучения, посмотрите открытые занятия — бесплатные вебинары: там разбирают реальные задачи по бэкенду и инфраструктуре без предоплаты.

Смежные темы: Проект «TG Autoposter на Nest.JS», Технология аппаратной виртуализации, Виртуализация и гипервизоры.

FAQ

Троттлинг — это всегда плохо?
Нет. Это защитный механизм. Тепловой троттлинг спасает чип от перегрева, а rate limiting защищает сервис от перегрузки. Плохо не само срабатывание, а его причина: постоянный перегрев или неправильно написанный код, который бьет в лимит.

Чем rate limiting отличается от throttling в JavaScript (функция throttle)?
Это близкие идеи, но разного масштаба. Функция throttle во фронтенде ограничивает частоту вызова обработчика (например, при скролле), а серверный rate limiting ограничивает число сетевых запросов от клиента и отвечает кодом 429. Оба сдерживают частоту, но на разных уровнях.

Что делать прямо сейчас, если ноутбук троттлит в игре?
Снизить нагрузку и температуру: закрыть фоновые программы, поднять ноутбук для обдува, почистить от пыли, при возможности заменить термопасту. Отключать защиту в BIOS не стоит — это лечит симптом ценой риска для процессора.

OTUS Журнал
Скидка 5% 14-20 сентября на курсы (popup)