재시도 백오프 계산기
지수 백오프의 재시도마다 얼마를 기다리고 총 얼마가 걸리는지 계산합니다. 지터 전략별 기댓값과, 상한에 닿은 뒤로는 총 시간이 선형으로만 늘어난다는 것을 표로 확인할 수 있습니다.
0으로 두면 따지지 않습니다. 넣으면 그 안에 몇 번이 들어가는지 나옵니다.
재시도 10회의 총 대기시간
32.8초
full jitter 기댓값 · 0ms ~ 1분 6초 사이
| 재시도 | t | 기댓값 | 누적 |
|---|---|---|---|
| 1 | 100ms | 50ms | 50ms |
| 2 | 200ms | 100ms | 150ms |
| 3 | 400ms | 200ms | 350ms |
| 4 | 800ms | 400ms | 750ms |
| 5 | 1.60초 | 800ms | 1.55초 |
| 6 | 3.20초 | 1.60초 | 3.15초 |
| 7 | 6.40초 | 3.20초 | 6.35초 |
| 8 | 12.8초 | 6.40초 | 12.8초 |
| 9 | 20.0초 ✂ | 10.0초 | 22.8초 |
| 10 | 20.0초 ✂ | 10.0초 | 32.8초 |
사용 방법
- 1기본 간격과 상한을 넣습니다. 간격은 재시도마다 두 배씩 늘어나되 상한에서 잘립니다.
- 2재시도 횟수를 넣습니다.
- 3지터 전략을 고릅니다. full jitter는 0~t 사이 무작위, equal jitter는 t/2~t 사이 무작위입니다.
- 4총 시간 예산을 넣으면 그 안에 몇 번이 들어가는지 함께 나옵니다.
자주 묻는 질문
대기시간 = min(상한, 기본 간격 × 2ⁿ)입니다. n은 몇 번째 재시도인지이며 0부터 셉니다. 기본 100ms에 상한 20초라면 100 → 200 → 400 → 800 → 1,600 → 3,200 → 6,400 → 12,800 → 20,000ms로 늘어나고 그 뒤로는 계속 20초입니다.
같은 순간에 실패한 클라이언트들이 같은 시각에 다시 몰려오는 것을 막기 위해서입니다. 지수 백오프만 쓰면 모두 정확히 같은 타이밍에 재시도해서, 서버가 겨우 일어나자마자 같은 파도를 다시 맞습니다. 이를 thundering herd라고 합니다.
full jitter는 0부터 t 사이에서 고르므로 기댓값이 t/2이고, equal jitter는 t/2에 0~t/2를 더하므로 기댓값이 3t/4입니다. full jitter는 평균 대기시간이 절반으로 줄지만 편차가 커서 어떤 시도는 거의 기다리지 않고 나갑니다. equal jitter는 최소 t/2는 기다려 너무 빠른 재시도를 막습니다. AWS 아키텍처 블로그 「Exponential Backoff And Jitter」의 정의입니다.
상한에 닿기 전에는 두 배씩 늘지만, 닿은 뒤로는 재시도 하나마다 딱 상한만큼만 늘어납니다. 기본 100ms·상한 20초라면 9번째부터 상한에 걸리므로, 그 뒤로는 한 번 더 붙일 때마다 20초씩만 늘어납니다. 그래서 횟수를 크게 잡아도 총 시간이 폭발하지는 않습니다.
다시 보내도 안전한 요청에만 겁니다. 같은 요청을 여러 번 처리해도 결과가 같아야 하고, 그렇지 않으면 요청마다 고유한 키를 붙여 서버가 중복을 걸러 내게 합니다. 4xx처럼 다시 보내도 똑같이 실패할 응답에는 재시도하지 않는 편이 낫습니다.
전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.
알아두면 좋은 점
- 지터를 쓰면 매 실행이 무작위라 실제 총 시간은 달라집니다. 여기 값은 기댓값이며 최소·최대 범위를 함께 보여 줍니다.
- 전략별 정의는 AWS 아키텍처 블로그 「Exponential Backoff And Jitter」를 따랐습니다.
- 직전 값에 의존하는 decorrelated jitter(sleep = min(상한, random(기본, 직전×3)))는 기댓값이 닫힌 식으로 나오지 않아 다루지 않았습니다.
- 실제 대기시간에는 타이머 정확도와 스케줄링 지연이 더해집니다. 밀리초 단위로 정확히 맞지는 않습니다.
- 재시도 횟수만큼 서버에 부하가 더 가므로, 총 시간 예산과 함께 서킷 브레이커 같은 장치를 같이 두는 것이 보통입니다.
함께 보면 좋은 도구
마지막 검증: 2026년 8월 30일 · 결과는 참고용 추정치입니다.