Что такое Rate лимиты

Что такое Rate лимиты

t.me/qa_chillout

Rate limits (лимиты запросов) — это ограничения на количество запросов, которые можно отправить к сервису (например, API или серверу) за определённый промежуток времени.


Зачем нужны Rate лимиты

  • Защита от перегрузки

Без ограничений любой пользователь или скрипт может засыпать сервис тысячами запросов в секунду. Это приведёт к перегрузке серверов, задержкам в ответах или полной недоступности системы. Rate лимиты позволяют поддерживать стабильную работу.

  • Защита от атак (DDoS, brute force)

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

  • Справедливое распределение ресурсов

В многопользовательских системах важно, чтобы один клиент не «съел» все мощности. Ограничение числа запросов гарантирует равные условия доступа для всех.

  • Контроль тарифов и монетизация

В API-сервисах часто есть бесплатный тариф с ограничением запросов (например, 1000 запросов в месяц). Это позволяет регулировать использование и стимулировать переход на платные планы.

  • Оптимизация инфраструктуры

Благодаря лимитам сервер предсказуемо выдерживает нагрузку. Это помогает точнее планировать ресурсы: количество серверов, баз данных, очередей сообщений.

  • Защита от парсеров и скриптов

Автоматические парсеры могут нагружать сервис и собирать данные без ограничений. Rate лимиты снижают такие риски и дополняют другие меры — капчу, авторизацию, контроль активности.


Где встречаются

Rate лимиты встречаются в самых разных системах. В первую очередь это API (REST, GraphQL, gRPC), где лимиты ограничивают количество запросов от одного клиента за определённое время.

В веб-сервисах — например, при регистрации, авторизации или массовой отправке форм, чтобы защититься от спама и автоматических атак.

Важно учитывать лимиты и в интеграциях: платёжные шлюзы, социальные сети или сторонние сервисы почти всегда ограничивают интенсивность обращений.

Наконец, лимиты действуют и в ботах и мессенджерах (Telegram, Slack, Discord), где они предотвращают перегрузку платформы и не позволяют злоупотреблять массовой рассылкой сообщений.


Как выглядят лимиты

Rate лимиты всегда задаются в формате «количество запросов за единицу времени».

Наиболее распространённые варианты:

  • 100 запросов в минуту

→ можно отправить не более 100 запросов за 60 секунд.

  • 1000 запросов в час

→ если лимит исчерпан, сервер начнёт отклонять запросы до следующего часа.

  • 10 запросов в секунду

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


Что происходит при превышении лимита

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

  • HTTP-статус: 429 Too Many Requests
  • Часто в ответ добавляется заголовок:
Retry-After: 30
  • Это значит, что повторить запрос можно через 30 секунд.


Как тестировать rate лимиты 

При тестировании rate лимитов важно обращать внимание на несколько моментов.

1. Нужно проверить, правильно ли считается лимит — учитываются ли запросы по секунде, минуте, часу или по скользящему окну (sliding window (например: 100 запросов за 60 секунд.), т.е лимит считается за последние N секунд/минут от текущего момента.).

2. Также важно понимать, есть ли разница для авторизованных и неавторизованных пользователей: часто для залогиненных клиентов лимиты мягче. При превышении лимита сервер должен возвращать именно 429 Too Many Requests, а не «500» или другие коды ошибок.

3. Отдельное внимание стоит уделить заголовку Retry-After: он должен присутствовать и корректно указывать время ожидания. QA стоит проверить, что лимит действительно сбрасывается после указанного интервала, а также как система ведёт себя при массовых параллельных запросах от разных потоков или пользователей. Важно удостовериться, что при достижении лимита не ломаются основные бизнес-фичи, например, корзина в интернет-магазине остаётся в рабочем состоянии.


Чек-лист проверки rate лимитов

  1. Отправить серию запросов и убедиться, что при достижении установленного лимита сервер начинает возвращать 429 Too Many Requests.
  2. Дождаться времени, указанного в заголовке Retry-After, и убедиться, что после этого сервер снова принимает запросы.
  3. Отправлять запросы с равными интервалами и проверить, что лимит не срабатывает раньше установленного времени.
  4. Выполнить запросы от разных пользователей или с разными токенами и проверить, что для каждого клиента лимит считается отдельно.


Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».

Report Page