İçeriğe geç
academia.sh

Ders 13 / 22

Temizleme

Kalıcılığın kaldırılmasının tutunma noktası cinsinden ölçülmesi: dokuz etkilenen varlıkta 22 noktanın beş keşif yöntemiyle 506 dakikada 17'sinin bulunması, dört yapılandırma kancasının üçünün hiçbir yöntemle bulunamaması çünkü bellek sınırlamada ağdan alınan varlıklarda kaybolmuş olması, altı temizleme düzeninde kaçırılan noktanın 10'dan 0'a inerken toplam sürenin 353 dakikadan 1.361 dakikaya çıkması ve beş kaçırılan noktanın 60 günde 8 yeniden bulaşma üretip ilkini beşinci günde vermesi.

İçindekiler

Önceki ders erişimi durdurdu. Kısa vadeli sınırlama 393. dakikada uygulandı, uzun vadeli eylemler saatler içinde devreye girdi ve kesme kalktı. Duran şey erişimdi; uçlarda otomatik çalıştırılan kalemler durmadı. Kısa vadeli kesme kalktığında ve varlıklar ağa döndüğünde, üzerlerinde ne varsa onunla dönerler.

Temizlemenin ölçü birimi tutunma noktasıdır: otomatik çalıştırılan kalem. Nokta türlerinin envanteri Uç Nokta Güvenliği kursunda ölçüldü; burada girdi olarak alınır. Bu derste sayılan üç şey ayrıdır — kaç nokta biliniyor, kaçı temizlendi, kaçı kaçırıldığında yeniden bulaşma üretiyor. Üçü aynı sayı değildir; aradaki fark bu dersin konusudur. Hiçbir kalıcılık kurma yöntemi yazılmaz, sayılan şey noktanın kendisi ve üzerindeki keşif yöntemidir.

Nokta Envanteri ve Keşif Yöntemleri

OM22: Önceki dersteki dokuz etkilenen varlıkta toplam 22 tutunma noktası vardır; yedi türe dağılırlar ve her noktanın günlük yeniden etkinleşme olasılığı bir veridir. OM23: Beş keşif yöntemi vardır ve her biri yalnız belirli türleri bulur: taban çizgisi karşılaştırma, süreç oluşturma kaydı taraması, kimlik deposu denetimi, ağ akış verisi izleme ve bellek incelemesi. OM24: Her yöntem her varlıkta uygulanamaz — taban çizgisi karşılaştırma taban çizgisi olan varlıkta, süreç kaydı taraması süreç kaydı ileten varlıkta, bellek incelemesi ise sınırlamada ağdan alınmamış varlıkta çalışır. OM25: Bulunan nokta kaldırılabilir ve nokta başına 8 dakika sürer; bir varlığı yeniden kurmak 95 dakika sürer ve o varlıktaki bütün noktaları — bulunmamış olanlar dahil — kaldırır. OM26: Kaçırılan nokta her gün kendi olasılığıyla yeniden etkinleşir; tarama 60 gündür ve tohum 20260214’tür. Bütün zarlar baştan atılır, altı düzen aynı günlük diziyi paylaşır.

// temizleme/model.mjs — kalicilik temizleme modeli: gercek bir uc, kalicilik yontemi ya da
// betik yok. Tutunma noktalari, kesif yontemleri ve varlik ozellikleri veri yapisidir.

export const TOHUM = 20260214, GUN = 60;       // yeniden bulasma taramasi
export const YENIDEN_KURMA_DK = 95, KALDIRMA_DK = 8;   // varlik basina, nokta basina

// etkilenen varlik: ad -> { taban cizgisi var mi, surec kaydi iletiyor mu,
// sinirlamada agdan mi alindi (bellek kayboldu) }
export const VARLIK = {
  "toplayici-03": { taban: true, surec: true, agdan: true },
  "toplayici-07": { taban: true, surec: false, agdan: true },
  "toplayici-11": { taban: true, surec: false, agdan: true },
  "dogrulayici-01": { taban: true, surec: true, agdan: true },
  "dogrulayici-02": { taban: true, surec: true, agdan: true },
  "faturalama-01": { taban: true, surec: false, agdan: true },
  "portal-01": { taban: true, surec: false, agdan: false },
  "isemri-01": { taban: true, surec: false, agdan: false },
  "uc-01": { taban: false, surec: true, agdan: true },
};

// tutunma noktasi: [varlik, tur, gunluk yeniden etkinlesme olasiligi]
// M24/K05'te tur envanteri olculdu; burada girdi olarak alinir, yontem yazilmaz
export const NOKTA = [
  ["toplayici-03", "servis tanimi", 0.06], ["toplayici-03", "zamanlanmis gorev", 0.05],
  ["toplayici-03", "yapilandirma kancasi", 0.04], ["toplayici-07", "servis tanimi", 0.06],
  ["toplayici-07", "oturum betigi", 0.03], ["toplayici-11", "zamanlanmis gorev", 0.05],
  ["toplayici-11", "bellekte kalan kosum", 0.02], ["dogrulayici-01", "servis tanimi", 0.07],
  ["dogrulayici-01", "kimlik kalemi", 0.09], ["dogrulayici-01", "disa acilan baglanti", 0.05],
  ["dogrulayici-02", "kimlik kalemi", 0.09], ["dogrulayici-02", "yapilandirma kancasi", 0.04],
  ["faturalama-01", "kimlik kalemi", 0.08], ["faturalama-01", "oturum betigi", 0.03],
  ["faturalama-01", "disa acilan baglanti", 0.05], ["portal-01", "yapilandirma kancasi", 0.04],
  ["portal-01", "kimlik kalemi", 0.08], ["isemri-01", "zamanlanmis gorev", 0.05],
  ["isemri-01", "bellekte kalan kosum", 0.02], ["uc-01", "oturum betigi", 0.03],
  ["uc-01", "servis tanimi", 0.06], ["uc-01", "yapilandirma kancasi", 0.04],
];

// kesif yontemi: ad, varlik basina dakika, buldugu turler, hangi varlikta uygulanabilir
export const YONTEM = [
  ["taban cizgisi karsilastirma", 22, ["servis tanimi", "zamanlanmis gorev", "oturum betigi"],
    (v) => v.taban],
  ["surec olusturma kaydi taramasi", 14,
    ["servis tanimi", "zamanlanmis gorev", "bellekte kalan kosum"], (v) => v.surec],
  ["kimlik deposu denetimi", 9, ["kimlik kalemi"], () => true],
  ["ag akis verisi izleme", 11, ["disa acilan baglanti"], () => true],
  ["bellek incelemesi", 47, ["bellekte kalan kosum", "yapilandirma kancasi"], (v) => !v.agdan],
];

// secilen yontem kumesiyle bulunan nokta dizini ve harcanan dakika
export function kesfet(secili) {
  const bulunan = new Set();
  let dk = 0;
  for (const [ad, dakika, turler, uygun] of YONTEM) {
    if (!secili.includes(ad)) continue;
    for (const [a, v] of Object.entries(VARLIK)) {
      if (!uygun(v)) continue;
      dk += dakika;
      NOKTA.forEach(([na, nt], i) => { if (na === a && turler.includes(nt)) bulunan.add(i); });
    }
  }
  return { bulunan, dk };
}

export function uretec(tohum) {                    // dogrusal eslesmeli uretec
  let x = tohum >>> 0;
  return () => ((x = (x * 1664525 + 1013904223) >>> 0) / 2 ** 32);
}
// butun zarlar bastan atilir: kosumlar ayni gunluk diziyi paylasir
const Z = (() => { const z = uretec(TOHUM);
  return Array.from({ length: GUN * NOKTA.length }, () => z()); })();

// kacirilan nokta gunluk olasilikla yeniden etkinlesir; ilk etkinlesme ve toplam sayilir
export function bulasma(kacirilan) {
  let ilk = null, olay = 0;
  for (let g = 0; g < GUN; g++)
    for (const i of kacirilan)
      if (Z[g * NOKTA.length + i] < NOKTA[i][2]) { olay++; if (ilk === null) ilk = g + 1; }
  return { ilk, olay };
}

export function olc(secili, yenidenKurulan) {
  const { bulunan, dk } = kesfet(secili);
  const kurulan = new Set(yenidenKurulan);
  const temiz = new Set(bulunan);
  NOKTA.forEach(([a], i) => { if (kurulan.has(a)) temiz.add(i); });
  const kacirilan = NOKTA.map((_, i) => i).filter((i) => !temiz.has(i));
  const kaldirilan = [...bulunan].filter((i) => !kurulan.has(NOKTA[i][0])).length;
  return { bulunan: bulunan.size, temiz: temiz.size, kacirilan,
    kesifDk: dk, temizDk: kaldirilan * KALDIRMA_DK + kurulan.size * YENIDEN_KURMA_DK,
    kurulan: kurulan.size, ...bulasma(kacirilan) };
}

Ölçüm dosyası önce yöntemleri tek tek ekleyip her birinin kaç yeni nokta getirdiğini sayar, sonra altı temizleme düzenini aynı envanterde koşturur.

// temizleme/olc.mjs — kac tutunma noktasi var, kesif yontemi kacini buluyor, temizleme
// kacini kaldiriyor ve kacirilan nokta kac gun sonra yeniden bulasma uretiyor.
import { TOHUM, GUN, VARLIK, NOKTA, YONTEM, kesfet, olc } from "./model.mjs";

const yaz = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join(""));
const t0 = process.hrtime.bigint();
const TUM = YONTEM.map((y) => y[0]);
const V = Object.keys(VARLIK);
const TURLER = [...new Set(NOKTA.map(([, t]) => t))];

console.log(`${V.length} etkilenen varlikta ${NOKTA.length} tutunma noktasi, ` +
  `${TURLER.length} tur; ${YONTEM.length} kesif yontemi; tohum ${TOHUM}`);

console.log("\n1. kesif yontemi eklendikce bulunan nokta (kumulatif)");
const A = [-32, 10, 8, 12, 15, 16];
yaz(A, "yontem", "dk/varlik", "varlik", "yeni nokta", "kumul. nokta", "kumul. dakika");
let secili = [], oncekiN = 0;
for (const [ad, dakika, , uygun] of YONTEM) {
  secili = [...secili, ad];
  const k = kesfet(secili), uygunSay = V.filter((a) => uygun(VARLIK[a])).length;
  yaz(A, ad, dakika, uygunSay, k.bulunan.size - oncekiN, `${k.bulunan.size}/${NOKTA.length}`, k.dk);
  oncekiN = k.bulunan.size;
}

console.log("\n2. nokta turu ve onu bulabilen yontem sayisi");
const B = [-24, 8, 9, -40];
yaz(B, "tur", "nokta", "yontem", "   bulunamayan nokta / neden");
const tum = kesfet(TUM).bulunan;
for (const tur of TURLER) {
  const dizin = NOKTA.map((n, i) => [n, i]).filter(([n]) => n[1] === tur);
  const eksik = dizin.filter(([, i]) => !tum.has(i));
  yaz(B, tur, dizin.length, YONTEM.filter((y) => y[2].includes(tur)).length,
    eksik.length ? `   ${eksik.length}: ${eksik.map(([n]) => n[0]).join(", ")}` : "   -");
}

const KAPSAM = ["toplayici-03", "toplayici-07", "toplayici-11",
  "dogrulayici-01", "dogrulayici-02", "faturalama-01"];
const DUZEN = {
  "ucuz kesif": [[TUM[0], TUM[2]], []],
  "bellek disinda": [TUM.slice(0, 4), []],
  "tam kesif": [TUM, []],
  "tam kesif + kapsam kurma": [TUM, KAPSAM],
  "ucuz kesif + kapsam kurma": [[TUM[0], TUM[2]], KAPSAM],
  "tum varligi yeniden kurma": [TUM, V],
};

console.log(`\n3. alti temizleme duzeni (${GUN} gunluk yeniden bulasma taramasi)`);
const C = [-27, 9, 8, 11, 10, 10, 8, 14, 7];
yaz(C, "duzen", "bulunan", "temiz", "kacirilan", "kesif dk", "temiz dk", "kurma", "ilk bulasma",
  "olay");
const R = {};
for (const [ad, [s, k]] of Object.entries(DUZEN)) {
  const r = R[ad] = olc(s, k);
  yaz(C, ad, `${r.bulunan}/${NOKTA.length}`, r.temiz, r.kacirilan.length, r.kesifDk, r.temizDk,
    r.kurulan, r.ilk ? `${r.ilk}. gun` : "-", r.olay);
}

console.log("\n4. tam kesiften sonra kacirilan nokta");
for (const i of R["tam kesif"].kacirilan)
  yaz([-4, -16, -24, -18], "", NOKTA[i][0], NOKTA[i][1],
    `gunluk olasilik ${NOKTA[i][2].toFixed(2)}`);

console.log("\n5. kacirilan nokta basina dusen bedel");
const D = [-27, 11, 12, 21, 16];
yaz(D, "duzen", "toplam dk", "kacirilan", "dk/kapatilan nokta", "olay/kacirilan");
const taban = R["ucuz kesif"];
for (const [ad, r] of Object.entries(R)) {
  const kapali = r.temiz - taban.temiz, dk = r.kesifDk + r.temizDk - taban.kesifDk - taban.temizDk;
  yaz(D, ad, r.kesifDk + r.temizDk, r.kacirilan.length, kapali > 0 ? (dk / kapali).toFixed(0) : "-",
    r.kacirilan.length ? (r.olay / r.kacirilan.length).toFixed(1) : "-");
}

const ms = Number(process.hrtime.bigint() - t0) / 1e6;   // ham olcum basilmaz, bant denetlenir
console.log(`\nalti duzen ve ${GUN} gunluk tarama 500 ms bandinda: ${ms < 500 ? "evet" : "hayir"}`);
9 etkilenen varlikta 22 tutunma noktasi, 7 tur; 5 kesif yontemi; tohum 20260214

1. kesif yontemi eklendikce bulunan nokta (kumulatif)
yontem                           dk/varlik  varlik  yeni nokta   kumul. nokta   kumul. dakika
taban cizgisi karsilastirma             22       8           8           8/22             176
surec olusturma kaydi taramasi          14       4           1           9/22             232
kimlik deposu denetimi                   9       9           4          13/22             313
ag akis verisi izleme                   11       9           2          15/22             412
bellek incelemesi                       47       2           2          17/22             506

2. nokta turu ve onu bulabilen yontem sayisi
tur                        nokta   yontem   bulunamayan nokta / neden            
servis tanimi                  4        2   -                                    
zamanlanmis gorev              3        2   -                                    
yapilandirma kancasi           4        1   3: toplayici-03, dogrulayici-02, uc-01
oturum betigi                  3        1   1: uc-01                             
bellekte kalan kosum           2        2   1: toplayici-11                      
kimlik kalemi                  4        1   -                                    
disa acilan baglanti           2        1   -                                    

3. alti temizleme duzeni (60 gunluk yeniden bulasma taramasi)
duzen                        bulunan   temiz  kacirilan  kesif dk  temiz dk   kurma   ilk bulasma   olay
ucuz kesif                     12/22      12         10       257        96       0        3. gun     19
bellek disinda                 15/22      15          7       412       120       0        5. gun     11
tam kesif                      17/22      17          5       506       136       0        5. gun      8
tam kesif + kapsam kurma       17/22      20          2       506       610       6        5. gun      4
ucuz kesif + kapsam kurma      12/22      17          5       257       586       6        5. gun      9
tum varligi yeniden kurma      17/22      22          0       506       855       9             -      0

4. tam kesiften sonra kacirilan nokta
    toplayici-03    yapilandirma kancasi    gunluk olasilik 0.04
    toplayici-11    bellekte kalan kosum    gunluk olasilik 0.02
    dogrulayici-02  yapilandirma kancasi    gunluk olasilik 0.04
    uc-01           oturum betigi           gunluk olasilik 0.03
    uc-01           yapilandirma kancasi    gunluk olasilik 0.04

5. kacirilan nokta basina dusen bedel
duzen                        toplam dk   kacirilan   dk/kapatilan nokta  olay/kacirilan
ucuz kesif                         353          10                    -             1.9
bellek disinda                     532           7                   60             1.6
tam kesif                          642           5                   58             1.6
tam kesif + kapsam kurma          1116           2                   95             2.0
ucuz kesif + kapsam kurma          843           5                   98             1.8
tum varligi yeniden kurma         1361           0                  101               -

alti duzen ve 60 gunluk tarama 500 ms bandinda: evet

Sayılar ölçüm sınıfındadır; girdileri yukarıdaki varsayımlardır.

Yöntem Eklendikçe Bulunan Nokta

Birinci tablo keşfi kümülatif olarak sayar. Taban çizgisi karşılaştırma sekiz varlıkta uygulanır, 176 dakika sürer ve tek başına 22 noktanın sekizini bulur. Süreç oluşturma kaydı taraması yalnız dört varlıkta uygulanabilir — beş varlık süreç kaydı iletmez — ve 56 dakika karşılığında bir yeni nokta getirir; bulduklarının geri kalanını taban çizgisi zaten bulmuştur. Kimlik deposu denetimi dokuz varlıkta 81 dakikayla dört yeni nokta, ağ akış verisi izleme 99 dakikayla iki yeni nokta ekler.

Son satır en pahalısıdır. Bellek incelemesi varlık başına 47 dakika sürer ve yalnız iki varlıkta uygulanabilir: sınırlamada ağdan alınan yedi varlıkta bellek içeriği kaybolmuştur. 94 dakika karşılığında iki yeni nokta getirir ve toplam 17’ye çıkarır. Beş nokta hiçbir yöntemle bulunamaz.

Bulunamayan Beş Nokta

İkinci tablo kaybı türe indirir. Dört yapılandırma kancasının üçü bulunamaz, çünkü bu türü yalnız bellek incelemesi bulur ve o yöntem toplayici-03, dogrulayici-02 ve uc-01 varlıklarında uygulanamaz. toplayici-11’deki bellekte kalan koşum aynı nedenle kaybolur. uc-01’deki oturum betiği başka bir nedenle kaçar: o varlığın taban çizgisi yoktur ve bu türü yalnız taban çizgisi karşılaştırma bulur.

Dördüncü tablo bu beş noktayı adıyla yazar. Aralarındaki ortak nokta bir keşif eksikliği değil, bir sınırlama kararının yan etkisidir. Önceki derste kısa vadeli sınırlama varlıkları ağdan aldı ve erişimi 393. dakikada durdurdu; aynı karar, bellek incelemesini yedi varlıkta imkânsız kıldı. Erken sınırlamanın üçüncü bir bedeli buradadır ve önceki dersin tablolarında görünmez.

Altı Düzen ve Yeniden Bulaşma

Üçüncü tablo temizleme düzenlerini karşılaştırır. Ucuz keşif — taban çizgisi ve kimlik denetimi — 257 dakikada 12 nokta bulur, 10’unu kaçırır ve 60 günde 19 yeniden bulaşma üretir; ilki üçüncü gündedir. Tam keşif 506 dakikada 17 nokta bulur, beşini kaçırır ve sekiz olay üretir; ilki beşinci gündedir.

Kaçırılan noktayı kapatmanın tek yolu, o noktanın bulunmasını beklemek değil, varlığı yeniden kurmaktır. Tam keşife altı kapsam varlığının yeniden kurulması eklendiğinde temiz nokta 17’den 20’ye çıkar — kurulan varlıklardaki bulunmamış noktalar da kalkar — kaçırılan ikiye iner ve olay dörde düşer. Dokuz varlığın hepsini yeniden kurmak kaçırılanı sıfıra indirir ve 60 günde hiç yeniden bulaşma olmaz.

Beşinci tablo bunun dakikasını verir. Ucuz keşif toplam 353, tam keşif 642, tam keşif artı kapsam kurma 1.116, hepsini yeniden kurma 1.361 dakikadır. Ucuz keşife göre kapatılan nokta başına maliyet tam keşifte 58, kapsam kurmada 95, tam yeniden kurmada 101 dakikadır. Dikkat çeken satır ucuz keşif artı kapsam kurmadır: 843 dakikada 17 nokta temizler, yani tam keşifle aynı sayıyı 201 dakika daha pahalıya alır ve beş nokta yine açık kalır. Yeniden kurma keşfin yerini tutmaz — yalnız kurulan varlıkta tutar.

Özet

  • Dokuz etkilenen varlıkta 22 tutunma noktası vardır; beş keşif yöntemi 506 dakikada 17’sini bulur, beşi hiçbir yöntemle bulunamaz.
  • Yöntemlerin marjinal katkısı eşit değildir: taban çizgisi karşılaştırma 176 dakikada sekiz nokta, süreç kaydı taraması 56 dakikada bir nokta, bellek incelemesi 94 dakikada iki nokta getirir.
  • Dört yapılandırma kancasının üçü ve bir bellekte kalan koşum, bellek incelemesi yedi varlıkta uygulanamadığı için kaçar; bu varlıklar sınırlamada ağdan alınmıştır.
  • Kaçırılan beş nokta 60 günde sekiz yeniden bulaşma üretir ve ilki beşinci gündedir; on nokta kaçırıldığında olay 19’a çıkar ve ilki üçüncü güne iner.
  • Kaçırılanı sıfıra indirmenin tek yolu varlığı yeniden kurmaktır: dokuz varlık 1.361 dakika tutar, kapatılan nokta başına 101 dakika.

Sonraki Adım

Noktalar temizlendi ve kaçırılan sayısı yazıldı. Bundan sonrası hizmetin geri getirilmesidir ve orada yeni bir soru çıkar: yeniden kurulan varlık hangi noktaya geri dönecek. Yedeklerin bir bölümü ilk tutunma anından sonra alınmıştır ve o yedeklerde noktalar durur. Sonraki ders kurtarmayı yeniden bulaşma riski ekseninde ölçer: hangi yedeğe dönmek temiz, temiz yedeğe dönmek kaç kalemi kaybettirir, kaç kalem elle yeniden kurulur ve denetimli geri getirmenin kaç aşaması yeniden bulaşmayı hangi aşamada yakalar.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat