Калькулятор экспоненциальной задержки (backoff)

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

ms
ms
0 — без ограничения.
Джиттер
Самое долгое ожидание1 min 32 s
ПовторЗадержкаПрошло к этому моменту (максимум)
1500 ms500 ms
21 s1,5 s
32 s3,5 s
44 s7,5 s
58 s15,5 s
616 s31,5 s
730 s1 min 2 s
830 s1 min 32 s

Работает в браузере: всё, что вы вводите, никуда не отправляется.

Как пользоваться

  1. Введите первую задержку в миллисекундах и множитель (2 — удвоение каждый раз).
  2. Задайте максимальную задержку (0 — без ограничения) и число повторов.
  3. Выберите вид джиттера и смотрите таблицу и итоги.

Формула

delay(n) = min(максимум, первая задержка × множитель^(n − 1))

С полным джиттером фактическая задержка случайна в пределах [0, delay(n)], с равным — в пределах [delay(n) ÷ 2, delay(n)]. Итоги складывают самые короткие, средние и самые длинные значения каждого повтора.

Разобранный пример

Первая задержка 500 мс, множитель 2, максимум 30 с, 8 повторов: задержки — 0,5, 1, 2, 4, 8 и 16 с, а 32 и 64 с обрезаются до 30 с. Самое долгое общее ожидание — 0,5 + 1 + 2 + 4 + 8 + 16 + 30 + 30 = 91,5 с, оно показывается округлённо: 1 min 32 s. С полным джиттером среднее общее ожидание вдвое меньше — 45,75 с.

Советы

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

Частые вопросы

Что такое экспоненциальная задержка (exponential backoff)?

Стратегия повторов, при которой каждая пауза длиннее предыдущей, обычно вдвое. Сбойный сервис получает передышку, а клиенты не засыпают его повторами. Задержка перед повтором n равна первой задержке × множитель^(n − 1), но не больше максимума.

Зачем добавлять джиттер?

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

Какую максимальную задержку выбрать?

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

Нужно ли повторять запрос при любой ошибке?

Нет. Повторяйте при тайм-аутах, ошибках соединения и ответах вроде 429 или 503, которые говорят о временной проблеме. Ошибки вроде 400 или 404 повторятся снова. Повторяйте только операции, которые безопасно выполнить ещё раз, или сначала сделайте их идемпотентными.

Ещё в разделе «Разработчикам»

Все инструменты раздела: Разработчикам ·Обновлено 4 ноября 2026 г.

Настройки конфиденциальности

Google Analytics показывает нам, какими инструментами пользуются и работают ли они. Он может ставить cookie. Ваш выбор сохраняется в этом браузере.