---
title: 'Kısa Ömürlü İş Yüklerinde İz'
source: 'https://academia.sh/tr/kurslar/uygulama-tespit-ve-uyumluluk/kisa-omurlu-is-yuklerinde-iz'
course: 'Tespit, Müdahale ve Uyumluluk'
language: tr
updated: '2026-08-17T18:06:41+00:00'
license: 'CC BY-SA 4.0'
---

# Kısa Ömürlü İş Yüklerinde İz

2 000 kısa ömürlü iş yükü 671 501 kayıt kalemi üretiyor, 642 504'ü dışarı yazılıyor: kayıp yalnızca yüzde 4,3. Aynı veride iş yükünün son kalemi 2 000 iş yükünün ancak 115'inde toplanabiliyor, hatalı çıkış sınıfının 92 iş yükünden hiçbir kalem çıkmıyor. Ayrıntı düzeyi sekiz kat artırıldığında dışarı yazılan kalem 4 272 000'e çıkıyor ama yetki kararı sorusunu cevaplayan iş yükü 1 218'den sıfıra iniyor. Bütün kalemleri toplayan ayarın bedeli 91 084 ek gönderim isteği ve 33 çekirdek-dakika ek yaşam süresi.

Önceki dersin bütün hesabı bir varsayıma dayanıyordu: bir kayıt alanı yazıldıysa müdahale anında
elde durur. Kalıcı bir hizmette bu doğrudur. Kısa ömürlü iş yüklerinde değildir. Bir görev
konteyneri kırk saniye yaşayıp sonlandığında, ürettiği kalemlerin yalnız **dışarı yazılabilmiş**
olanı sorgulanabilir; gerisi süreçle birlikte gider. Bulut ortamında kanıt toplamanın kalıcı
sistemlerden farkı Bulut ve Sanallaştırma Güvenliği kursunda ölçülmüştü; burada tekrarlanmaz,
girdi olur.

Bu ders yalnız **uygulama izini** ölçer: iş yükü ölmeden hangi uygulama kalemi dışarı yazılmış
oluyor. Ölçünün adı **toplanabilen kalem penceresidir** ve tek bir sayıya indirgenemez, çünkü
kaybolan kalemler akış içinde rastgele dağılmaz — hepsi sondadır.

- **UM17.** İş yükü kümesi **kurgudur**: 2 000 çalıştırma, dört ömür bandı. Ömürler tohumu
  görünen bir üreteçten gelir.
- **UM18.** Kalemler iş yükü içinde sabit hızda üretilir ve yerel bir **tampona** yazılır.
  Gönderici her `aralik` saniyede bir, en çok `yigin` kadar kalemi dışarı yazar.
- **UM19.** İş yükü sonlandığında tamponda kalan her şey **kaybolur**. Son bir gönderim ancak
  kapanış süresi gönderim süresini karşılıyorsa yapılabilir; modelde gönderim 1,2 saniye,
  varsayılan kapanış 0,5 saniyedir.
- **UM20.** **Soru**, iş yükünün ömründeki göreli bir konumda üretilen kaleme bağlıdır. Kalem
  dışarı yazılmadıysa o soru o iş yükü için cevapsızdır; ölçü birimi yine cevaplanamayan sorudur.
- **UM21.** Süreler ve hızlar **veridir**, bu sayfada yapılmış bir ölçüm değildir.

## Toplanabilen Kalem Penceresi

```js
// iz.mjs — kisa omurlu is yuklerinde disari yazilabilen kalem penceresi olculur.
// MODELDIR: is yukleri, omurler ve kalem hizlari kurgudur.
export const TOHUM = 20260502, IS_YUKU = 2000;
export const HIZ = 6, ARALIK = 5, YIGIN = 200, GONDERIM = 1.2, KAPANIS = 0.5;
const uretec = (t) => { let s = t >>> 0;
  return () => (s = (s * 1664525 + 1013904223) >>> 0) / 4294967296; };
const r = uretec(TOHUM);

// Sinif = is yukunun omur bandi. Hatali cikis en kisa yasayan ve en cok kaybedendir.
export const SINIF = [
  { ad: "kisa gorev", pay: 0.55, alt: 3, ust: 20 },
  { ad: "toplu is", pay: 0.25, alt: 20, ust: 120 },
  { ad: "istek isleyici", pay: 0.15, alt: 60, ust: 400 },
  { ad: "hatali cikis", pay: 0.05, alt: 1, ust: 4 },
];
const sinifSec = (u) => { let t = 0;
  for (const s of SINIF) { t += s.pay; if (u < t) return s; } return SINIF.at(-1); };
export const YUKLER = Array.from({ length: IS_YUKU }, () => {
  const s = sinifSec(r());
  return { sinif: s.ad, omur: s.alt + r() * (s.ust - s.alt) };
});

// Tampon FIFO'dur: her gonderim en cok YIGIN kalem tasir. Is yuku olurken tamponda
// kalan her sey gider; son gonderim ancak kapanis suresi gonderim suresini karsilarsa olur.
export function kos(omur, hiz = HIZ, aralik = ARALIK, kapanis = KAPANIS) {
  const kalem = Math.max(1, Math.floor(omur * hiz));
  let gonderilen = 0, istek = 0;
  const gonder = (t) => {
    const uretilen = Math.min(kalem, Math.floor(t * hiz) + 1);
    const g = Math.min(YIGIN, uretilen - gonderilen);
    if (g > 0) { gonderilen += g; istek++; }
  };
  for (let t = aralik; t <= omur; t += aralik) gonder(t);
  if (kapanis >= GONDERIM) gonder(omur);
  return { kalem, gonderilen, kayip: kalem - gonderilen, istek };
}

// Soru = [metin, kalemin is yuku omrundeki goreli konumu]. Kalem disari yazilmadiysa
// o is yuku icin soru cevapsizdir.
export const SORU = [
  ["istek hangi hesaptan geldi", 0.00],
  ["hangi uc nokta cagrildi", 0.10],
  ["hangi bagimlilik cagrildi", 0.45],
  ["yetki karari neydi", 0.85],
  ["is yuku hangi hatayla sonlandi", 1.00],
];

export function toplu(hiz = HIZ, aralik = ARALIK, kapanis = KAPANIS) {
  let kalem = 0, gonderilen = 0, istek = 0;
  const soruSay = SORU.map(() => 0);
  for (const y of YUKLER) {
    const o = kos(y.omur, hiz, aralik, kapanis);
    kalem += o.kalem; gonderilen += o.gonderilen; istek += o.istek;
    SORU.forEach(([, p], j) => {
      if (Math.floor(p * (o.kalem - 1)) < o.gonderilen) soruSay[j]++;
    });
  }
  return { kalem, gonderilen, kayip: kalem - gonderilen, istek, soruSay };
}

export const gen = (B) => (h) => h.map((v, j) => (j ? String(v).padStart(B[j])
  : String(v).padEnd(B[0]))).join("");

if (import.meta.url === `file://${process.argv[1]}`) {
  console.log(`model (tohum ${TOHUM}): ${IS_YUKU} is yuku, ${HIZ} kalem/s, gonderim ` +
    `araligi ${ARALIK} s, yigin ${YIGIN} kalem, kapanis suresi ${KAPANIS} s, ` +
    `gonderim suresi ${GONDERIM} s`);
  const y = gen([18, 8, 11, 12, 12, 11, 9]);
  console.log("\n" + y(["is yuku sinifi", "adet", "ort. omur", "uretilen", "gonderilen",
    "kayip", "oran"]));
  for (const s of SINIF) {
    const l = YUKLER.filter((w) => w.sinif === s.ad).map((w) => kos(w.omur));
    const ku = l.reduce((t, o) => t + o.kalem, 0), g = l.reduce((t, o) => t + o.gonderilen, 0);
    const om = YUKLER.filter((w) => w.sinif === s.ad).reduce((t, w) => t + w.omur, 0);
    console.log(y([s.ad, l.length, (om / l.length).toFixed(1), ku, g, ku - g,
      (g / ku).toFixed(2)]));
  }
  const t = toplu();
  console.log(`\ntoplam ${t.kalem} kalem uretildi, ${t.gonderilen} disari yazildi, ` +
    `${t.kayip} kayip (yuzde ${((t.kayip / t.kalem) * 100).toFixed(1)})`);
  const z = gen([32, 8, 14, 8]);
  console.log("\n" + z(["soru", "konum", "cevaplanan", "oran"]));
  SORU.forEach(([m, p], j) => console.log(z([m, p.toFixed(2),
    `${t.soruSay[j]}/${IS_YUKU}`, (t.soruSay[j] / IS_YUKU).toFixed(2)])));
}
```

```
model (tohum 20260502): 2000 is yuku, 6 kalem/s, gonderim araligi 5 s, yigin 200 kalem, kapanis suresi 0.5 s, gonderim suresi 1.2 s

is yuku sinifi        adet  ort. omur    uretilen  gonderilen      kayip     oran
kisa gorev            1091       11.5       74404       57738      16666     0.78
toplu is               536       71.2      228687      221405       7282     0.97
istek isleyici         281      217.8      367056      363361       3695     0.99
hatali cikis            92        2.5        1354           0       1354     0.00

toplam 671501 kalem uretildi, 642504 disari yazildi, 28997 kayip (yuzde 4.3)

soru                               konum    cevaplanan    oran
istek hangi hesaptan geldi          0.00     1757/2000    0.88
hangi uc nokta cagrildi             0.10     1757/2000    0.88
hangi bagimlilik cagrildi           0.45     1757/2000    0.88
yetki karari neydi                  0.85     1218/2000    0.61
is yuku hangi hatayla sonlandi      1.00      115/2000    0.06
```

İki tablo aynı koşumun iki farklı okumasıdır ve birbirine hiç benzemez. Üstteki tabloda toplam
kayıp yüzde 4,3'tür. Bu sayı bir gösterge panosunda "kayıt toplama sağlıklı" diye okunur;
gerçekten de üretilen 671 501 kalemin 642 504'ü dışarı yazılmıştır. Kayıt hattında hiçbir arıza
yoktur; gönderici çalışmakta, ağ ayakta, hedef yazılabilir durumdadır.

Alttaki tablo aynı veriyi soru başına okuyor ve başka bir şey söylüyor. İş yükünün ilk yarısında
üretilen kalemler 2 000 iş yükünün 1 757'sinde toplanabiliyor. Yetki kararının yazıldığı kalem
1 218'inde, iş yükünün nasıl sonlandığını yazan son kalem yalnız **115'inde**. Yani "iş yükü
hangi hatayla sonlandı" sorusu iş yüklerinin yüzde 94'ünde cevapsızdır — kayıt yazıldığı hâlde.
**Kayıp kalem oranı ile cevaplanabilirlik oranı aynı şey değildir, çünkü kaybolan kalemler akış
içinde rastgele dağılmaz; hepsi sondadır ve müdahalede en çok istenen kalemler de sondakilerdir.**

Sınıf tablosu kaybın nerede yoğunlaştığını yazıyor. İstek işleyici sınıfı ortalama 218 saniye
yaşar ve kalemlerinin yüzde 99'unu dışarı yazar. Hatalı çıkış sınıfı ortalama 2,5 saniye yaşar
ve **hiçbir kalemi dışarı çıkmaz**: 92 iş yükü, 1 354 kalem, sıfır. Gönderim aralığı beş
saniyedir; iki buçuk saniye yaşayan bir iş yükü ilk periyodik gönderime hiç ulaşmaz, kapanış
süresi de gönderim süresini karşılamadığı için son gönderim yapılamaz. Bu sınıf toplam kalemin
yalnız binde ikisidir, ama müdahalede en çok bakılan sınıftır: bir iş yükünün beklenmedik biçimde
ve hızla sonlanması zaten incelemenin başlangıç nedenidir.

Toplam kayıp oranının yanıltmasının nedeni de bu tablodadır. Toplam, kalem sayısıyla
ağırlıklandırılmış bir ortalamadır ve kalemlerin büyük bölümünü uzun yaşayan iş yükleri üretir:
281 istek işleyici tek başına 367 056 kalem yazar, 1 091 kısa görev ise 74 404. Uzun yaşayanın
yüzde 99'luk oranı toplamı yukarı çeker, kısa yaşayanın yüzde 78'i ve hatalı çıkışın sıfırı
toplamda kaybolur. **İş yükü başına ölçülmeyen bir toplama oranı, en çok kalem üreten sınıfın
oranını bütün ortamın oranı diye rapor eder.** Aynı veri iş yükü başına okunduğunda 92 iş yükünün
tamamen sessiz olduğu görülür ve bu sayı toplam oranın hiçbir yerinde yazmaz.

## Ayrıntı Düzeyi ve Toplama Ayarları

```js
// ayar.mjs — iki ayar ekseni kosturulur: ayrinti duzeyi (kalem/s) ve gonderim duzeni
// (aralik, kapanis suresi). Olculen sey kalem sayisi degil cevaplanan sorudur. MODELDIR.
import { HIZ, ARALIK, KAPANIS, IS_YUKU, SORU, toplu, gen } from "./iz.mjs";

const y = gen([10, 11, 12, 8, 14, 12, 17]);
console.log(y(["ayrinti", "uretilen", "gonderilen", "kayip", "yetki (0.85)", "son (1.00)",
  "cevaplanan cift"]));
for (const kat of [1, 2, 4, 8]) {
  const t = toplu(HIZ * kat);
  const cift = t.soruSay.reduce((a, b) => a + b, 0);
  console.log(y([`${kat}x`, t.kalem, t.gonderilen, ((t.kayip / t.kalem) * 100).toFixed(1) + "%",
    (t.soruSay[3] / IS_YUKU).toFixed(2), (t.soruSay[4] / IS_YUKU).toFixed(2),
    `${cift}/${SORU.length * IS_YUKU}`]));
}

const z = gen([9, 10, 12, 14, 12, 12, 16]);
console.log("\n" + z(["aralik", "kapanis", "gonderilen", "yetki (0.85)", "son (1.00)",
  "istek", "ek cekirdek-sn"]));
for (const kapanis of [KAPANIS, 1.5]) for (const aralik of [5, 2, 1]) {
  const t = toplu(HIZ, aralik, kapanis);
  console.log(z([aralik, kapanis, t.gonderilen, (t.soruSay[3] / IS_YUKU).toFixed(2),
    (t.soruSay[4] / IS_YUKU).toFixed(2), t.istek,
    (IS_YUKU * (kapanis - KAPANIS)).toFixed(0)]));
}

const taban = toplu(), yogun = toplu(HIZ * 8), genis = toplu(HIZ, 1, 1.5);
console.log(`\nayrinti 8 kat artinca disari yazilan kalem ${taban.gonderilen}'den ` +
  `${yogun.gonderilen}'e cikiyor ama yetki karari sorusu ` +
  `${taban.soruSay[3]} is yukunden ${yogun.soruSay[3]} is yukune iniyor`);
console.log(`en genis ayar (aralik 1 s, kapanis 1.5 s) ayni ayrintida son kalemi ` +
  `${taban.soruSay[4]} yerine ${genis.soruSay[4]} is yukunde disari yaziyor; ` +
  `bedeli ${genis.istek - taban.istek} ek gonderim istegi ve ` +
  `${(IS_YUKU * (1.5 - KAPANIS) / 60).toFixed(0)} cekirdek-dakika ek yasam suresi`);
```

```
ayrinti      uretilen  gonderilen   kayip  yetki (0.85)  son (1.00)  cevaplanan cift
1x             671501      642504    4.3%          0.61        0.06       6604/10000
2x            1344000     1283327    4.5%          0.59        0.03       6500/10000
4x            2688990     2564937    4.6%          0.58        0.01       6454/10000
8x            5378988     4272000   20.6%          0.00        0.00       5221/10000

aralik      kapanis  gonderilen  yetki (0.85)  son (1.00)       istek  ek cekirdek-sn
5               0.5      642504          0.61        0.06       21360               0
2               0.5      662111          0.89        0.15       55024               0
1               0.5      668090          1.00        0.31      111065               0
5               1.5      671501          1.00        1.00       23245            2000
2               1.5      671501          1.00        1.00       56715            2000
1               1.5      671501          1.00        1.00      112444            2000

ayrinti 8 kat artinca disari yazilan kalem 642504'den 4272000'e cikiyor ama yetki karari sorusu 1218 is yukunden 0 is yukune iniyor
en genis ayar (aralik 1 s, kapanis 1.5 s) ayni ayrintida son kalemi 115 yerine 2000 is yukunde disari yaziyor; bedeli 91084 ek gonderim istegi ve 33 cekirdek-dakika ek yasam suresi
```

İlk tablo bu kursun ikinci kez gösterdiği olguyu veriyor. Ayrıntı düzeyi sekiz kat artırıldığında
dışarı yazılan kalem 642 504'ten 4 272 000'e çıkar — altı buçuk kat daha çok kayıt. Aynı hareket
yetki kararı sorusunu cevaplayan iş yükünü 1 218'den sıfıra indirir. Mekanizma son sütunda değil
kayıp sütununda görünür: sekiz kat ayrıntıda üretim hızı saniyede 48 kaleme çıkar, oysa gönderici
beş saniyede en çok 200 kalem taşır, yani saniyede 40. Üretim taşıma kapasitesini geçtiğinde
tampon **birikmeye başlar** ve akışın sonu hiçbir zaman sıraya gelmez. **Daha çok kayıt yazmak,
taşıma kapasitesi sabitken en son yazılan kalemi kuyrukta daha da geriye iter; toplam kalem artar,
cevaplanan soru azalır.**

Bu kırılmanın altındaki üç satır aynı olgunun yumuşak hâlidir. Ayrıntı iki ve dört kat
artırıldığında kapasite henüz aşılmaz; yine de cevaplanan soru–iş yükü çifti 6 604'ten 6 454'e
iner. Kazanç yoktur, çünkü eklenen kalemler zaten toplanabilen pencerenin içine düşer; kaybedilen
ise yine sondaki kalemdir.

İkinci tablo iki ayarın ne satın aldığını yazıyor. Gönderim aralığını beş saniyeden bir saniyeye
indirmek yetki kararı sorusunu 0,61'den 1,00'e çıkarır, ama son kalem yine iş yüklerinin ancak
yüzde 31'inde toplanır — çünkü sorun aralık değil, kapanış anındaki gönderimin hiç
yapılamamasıdır. Kapanış süresi gönderim süresini karşılayacak kadar uzatıldığında beş saniyelik
aralıkla bile bütün sorular her iş yükünde cevaplanır. **Toplanabilen kalem penceresini belirleyen
şey gönderim sıklığı değil, iş yükünün ölmeden önce bir gönderim tamamlayabilmesidir.**

Bedel iki sütunda yazılıdır. Aralığı bire indirmek gönderim isteğini 21 360'tan 111 065'e çıkarır:
beş kattan fazla ağ isteği, iş yükü başına elli beş istek. Kapanış süresini bir saniye uzatmak
2 000 çekirdek-saniye, yani 33 çekirdek-dakika ek yaşam süresi getirir ve her iş yükünün
sonlanmasını geciktirir. İkisi birlikte 91 084 ek istek eder. Üçüncü bir bedel de tabloda
görünmez ama önceki derslerin defterindedir: dışarı yazılan her kalem, bir önceki dersteki sabit
saklama bütçesinin içine düşer ve saklama gününü kısaltır.

## Özet

- Kısa ömürlü iş yüklerinde ölçü, yazılan kalem değil **dışarı yazılabilen** kalemdir; iş yükü
  ölürken tamponda kalan her şey kaybolur.
- Kayıp oranı ile cevaplanabilirlik oranı ayrı sayılardır: modelde kayıp yüzde 4,3 iken, iş
  yükünün son kalemi 2 000 iş yükünün yalnız 115'inde toplanabilir.
- Kayıp sınıflara eşit dağılmaz: ortalama 2,5 saniye yaşayan hatalı çıkış sınıfının 92 iş
  yükünden hiçbir kalem çıkmaz, oysa incelemenin başlangıç nedeni çoğu zaman bu sınıftır.
- Ayrıntı düzeyini artırmak cevabı düşürebilir: sekiz kat ayrıntıda dışarı yazılan kalem altı
  buçuk kat artarken yetki kararı sorusunu cevaplayan iş yükü 1 218'den sıfıra iner, çünkü üretim
  hızı taşıma kapasitesini aşar ve akışın sonu sıraya hiç gelmez.
- Pencereyi belirleyen şey gönderim sıklığı değil, iş yükünün ölmeden bir gönderim
  tamamlayabilmesidir: kapanış süresi uzatıldığında beş saniyelik aralık bile yeterlidir.
- Bedel ölçülür: 91 084 ek gönderim isteği, 33 çekirdek-dakika ek yaşam süresi ve dışarı yazılan
  her kalemin sabit saklama bütçesinden aldığı pay.

## Sonraki Adım

Buraya kadar bütün kayıtlar, uyarılar ve kalemler kurumun kendi içinden geldi. Bir uygulamanın
açığı çoğu zaman başka bir yerden duyulur: dışarıdan bakan biri onu bulur ve bildirir. Bu akış bir
tespit hattı değildir, bir iş kuyruğudur; girdisi insan tarafından yazılmış bildirimler, çıktısı
düzeltilmiş ya da reddedilmiş kalemlerdir ve ölçüsü kalem sayısı değil **süredir**. Sonraki ders
dış bildirim kanalını ve ödül programını bu eksende ölçer: bildirimden doğrulamaya ve doğrulamadan
düzeltmeye kaç gün geçiyor, gelen bildirimlerin kaçı yineleniyor ve kanalın açılması kuyruğu hangi
noktada tıkıyor.
