Maradva egy kicsit az előző bejegyzésem témájánál a Transport-nál, a mai bejegyzésem egy új Queue attribútumról szól, a Velocity értékről. Ha egy Exchange Server 2013-as kiszolgálón a get-queue parancs segítségével szeretnénk a queue tartalmát megnézni, akkor feltűnhet egy érdekes új érték: Velocity.
Ennek mibenlétét fejtjük meg a mai bejegyzésben.
Mikor van tele a queue?
Másként, kicsit hosszabban is feltehetném az előző kérdést. Mi az üzemszerű működés egy Transport szerver esetén?
- Ha a queue-ban levő elemek száma (MessageCount) mindig 0?
- Ha a MessageCount értéke kevesebb mint 10, 100, 500, 1000?
Biztosan sokan monitorozzák üzemszerűen a levelezőrendszerüket. Mi is azt tesszük az adatközpontjainkban levő szerverekkel. És innen (is) a tapasztalat, illetve a gondolkodás eredménye: a queue-ban álló levelek száma (MessageCount) akár pillanatnyi, akár átlagolt érték, nem mond el valójában semmi érdekeset számunkra a szerver aktuális állapotát illetően. Sem a csökkenő, sem a növekvő MessageCount érték nem hordoz elég információt ahhoz, hogy eldöntsük, a szerver valójában jól végzi-e a dolgát, vagy sem.
Nézzünk néhány példát,:
- Azt látjuk, hogy a MessageCount értéke 0. – azonban a szerverhez beérkező, kézbesítendő levelek száma is nulla! Joggal hihetnénk, hogy a szerver egészséges, de nem tudjuk meghatározni, lehet, hogy ha 1 levelet is kapna, nem tudná kézbesíteni, de az is lehet, hogy igen. Teljes a tanácstalanság, pedig joggal hihetnénk, hogy minden rendben.
- Azt látjuk, hogy a MessageCount értéke 1000. – azonban a szerver épp most kapott 5000 levelet, amiből 4000-t az elmúlt 2 percben kézbesített és a következő 1000-t a következő 30mp-ben kézbesíteni fogja. Baj van? Nincs, hiszen minden üzemszerű.
- Azt látjuk, hogy a MessageCount értéke konstans 100 körül van. – igen, jó pár célkiszolgáló az Interneten épp elérhetetlen. Baj van? Nem.
Talán látható a fenti példákból, hogy a MessageCount összességében nem árulja el számunkra azt, hogy mekkora a baj. Legalább a Status oszlopot is hozzá kell olvasni, ami az adott Queue-hoz tartozóan leírja, hogy mi az állapota.
Csökken, vagy nő a queue?
A Velocity (sebesség) értéket annak meghatározására találtuk ki a queue figyeléshez, hogy egyszerűen megállapítható legyen, hogy egy adott queue épül, vagy csökken. A csökkenő tendenciát mutató queue, legyen is bármekkora a mérete, nem jelent komoly veszélyt. Egy épülő (növekvő) queue viszont annál inkább.
De mikor épül és mikor csökken egy queue? Akkor ha több vagy éppen kevesebb elem van benne mint korábban? Nem szükségszerűen. Egy adat még hiányzik és az előző bekezdésben is erre próbáltam kihegyezni a példákat. A queue méretéhez érdemes ismernünk azt, hogy egyébként mennyi volt a queue-ba bemenő és az abból kimenő elemek száma:
Elég egyszerű számtan ez. Ha több levél megy ki, mint amennyi be, akkor csökken a Queue, ha fordítva, akkor viszont épül, vagyis nő a queue.
A Velocity érték ezt a sebességkülönbséget fejezi ki. Méghozzá úgy, hogy két értéket tart számon a szerver minden queue-hoz tartozóan:
- IncomingRate – az elmúlt 1 percben beérkezett levelek száma a következő képlet alapján számítva:
(i1+i2+i3+i4+i5+i6)/6, ahol in = 5 másodperc alatt beérkezett levelek átlaga.
- OutgoingRate – az elmúlt 1 percben kiküldött levelek száma a következő képlet alapján számítva: (o1+o2+o3+o4+o5+o6)/6, ahol on = 5 másodperc alatt kiküldött levelek átlaga.
Elméleti példa:
- IncomingRate – egy levél érkezett be egy 5mp-s időablakban: (1/5)/6= 0.016666666666667
- OutgoingRate – két levél ment ki egy 5mp-s időablakban: (2/5)/6=0.0666666666666667
- Velocity = ((2/5)/6) – ((1/5)/6) = 0.05
A Velocity = OutgoingRate – IncomingRate. A Velocity érték a következőt fejezi ki számunkra:
- Ha az értéke nagyobb 0-nál, akkor a queue-ból gyorsabban mennek ki a levelek, mint ahogy beérkeznek.
- Ha az értéke 0, akkor két lehetőség van. Vagy inactive a queue, vagy pontosan olyan ütemben jönnek be a levelek, amilyen ütemben kimennek.
- Ha az értéke kisebb 0-nál, akkor lassabban mennek ki a levelek, mint ahogy beérkeznek.
Fontos azt kiemelni, hogy ha negatív értéket látunk a Velocity esetében és az nagyon közel van a nullához, az nem jelez komoly queue problémát.
Például, egy –0.02-es érték elég alacsonynak tekinthető!
Gyakorlati példa (épülő queue):
A Get-queue parancs segítségével lekérdezhetjük az IncomingRate és az OutgoingRate értékét. Láthatóan egy épülő Queue van, mert a Velocity értéke –0.01, ami 0.02-0.03 végeredménye.
Gyakorlati példa (csökkenő queue):
Zárszó
Elég törpe értékeket sikerült itt bemutatnom, de éles környezetről nem készíthetek a blogba képernyőfelvételeket. A lényeg, talán így is érthető ami pedig nem más, hogy van egy új értékünk a Velocity amire érdemes odafigyelni és nem átsiklani felette. Többet árul el, mint önmagában a MessageCount érték.