---
title: "Backoff & Jitter Hesaplayıcı"
description: "Exponential backoff zamanlamasını hesapla ve full, equal, decorrelated jitter retry’leri nasıl dağıttığını gör. Tarayıcıda çalışır, hiçbir şey yeniden denenmez."
url: https://sade.dev/tr/tools/backoff-calculator/
lang: tr
author: "Muhammet Şafak"
published: 2026-06-17
updated: 2026-08-30
section: Tool
tags: ["retry","reliability"]
---

# Backoff & Jitter Hesaplayıcı

> Exponential backoff zamanlamasını hesapla ve full, equal, decorrelated jitter retry’leri nasıl dağıttığını gör. Tarayıcıda çalışır, hiçbir şey yeniden denenmez.

Jitter'sız retry'lar, geçici bir tıkanmayı bir kesintiye çevirmenin yoludur. Bu araç, exponential backoff'un gecikme zamanlamasını çıkarır ve her jitter stratejisinin denemeleri nasıl dağıttığını gösterir. Yalnızca hesaplar — hiçbir şeyi yeniden denemez.

## Formül

Exponential backoff, `n`. deneme için `delay = min(cap, base × factorⁿ⁻¹)`:

- **base** — ilk bekleme (örneğin 100 ms).
- **factor** — deneme başına büyüme (`2` her seferinde ikiye katlar).
- **cap** — üst sınır; bekleme sınırsız büyümesin diye. Cap olmadan `base 100ms × 2`, 12. denemede **~3,4 dakikaya** ulaşır.

## Neden jitter — thundering herd

Bin tane istemci **aynı** zamanlamayla geri çekilirse, senkronize dalgalar hâlinde yeniden dener — servisi deviren o tepe, bir zamanlayıcıyla tekrar gelir. Jitter, beklemeyi rastgeleleştirerek onları senkronizasyondan çıkarır.

- **Full** — `[0, delay]` aralığında uniform. En geniş dağılım; bir istemci çok erken yeniden deneyebilir.
- **Equal** — `[delay/2, delay]` aralığında uniform. Bir taban tutar ki kimse anında üstüne binmesin, yine de herd'i dağıtır.
- **Decorrelated** — sonraki bekleme `[base, önceki × 3]` aralığında uniform, capped. Son beklemeye uyum sağlar ve güçlü bir genel varsayılandır.
- **None** — çıplak senkronize zamanlama. Tek istemci için sorun değil; bir filo için tehlikeli.

## Tabloyu okumak

**En az / En çok**, bir denemenin beklemesinin düşebileceği aralıktır. **None** için ikisi eşittir. Özetteki *en kötü durumda toplam bekleme*, her denemenin en çok değerini toplar — bir istemcinin N denemeden sonra vazgeçmeden önce toplamda bekleyebileceği en uzun süre. **Full** ve **Equal**'ın en az değerini nasıl aşağı çektiğine, en çok değerinin — dolayısıyla en kötü durumda toplam beklemenin — **None**'dakiyle aynı kaldığına bak. **Decorrelated** ise aralığı genişletir: tabanı `base`'te durur, tavanı **None**'ınkini aşar; yani en kötü durumda toplamı küçülmez, büyür. İyileşmekte olan bir servisten yükü kaldıran şey, daha kısa bir toplam değil, beklemelerin bu aralığa yayılmasıdır.

Bir retry, aynı zamanda aynı mesajın iki kez teslim edilmesinin de yoludur; o yüzden öbür uçtaki handler idempotent olmalı: [BabelQueue idempotency spec'ine](https://babelqueue.com/docs/spec/1.x/idempotency) ve çalıştırılabilir [`idempotency-payments` örneğine](https://github.com/BabelQueue/babelqueue-examples/tree/main/idempotency-payments) bak.

## Gizlilik

Her şey tarayıcında çalışır. Hiçbir girdi sayfadan dışarı çıkmaz.
