Elosztott alkalmazások teljesítményének finomhangolása
Ebben a sorozatban számos felhőalapú alkalmazási forgatókönyvet ismertetünk, amelyek bemutatják, hogyan diagnosztizálja a fejlesztői csapat a teljesítményproblémákat terhelési tesztek és metrikák használatával. Ezek a cikkek a tényleges terhelési teszteket ismertetik, amelyeket a példaalkalmazások fejlesztése során hajtottunk végre. A forgatókönyvek kódja elérhető a GitHubon.
Forgatókönyvek:
Mi az a teljesítmény?
A teljesítményt gyakran az átviteli sebességgel, a válaszidővel és a rendelkezésre állással mérik. A teljesítménybeli céloknak üzleti műveleteken kell alapulniuk. Az ügyfelek felé irányuló feladatokra szigorúbb követelmények vonatkozhatnak, mint az üzemeltetési feladatokra, például a jelentések készítésére.
Olyan szolgáltatásiszint-célkitűzést (SLO-t) szeretnénk definiálni, amely meghatározza az egyes számítási feladatok teljesítménycélját. Ezt a célkitűzést általában úgy éri el, hogy egy teljesítménycélt fő teljesítménymutatókra (KPI-kre) bont, például:
- Adott kérések késése vagy válaszideje
- A másodpercenként végrehajtott kérések száma
- A kivételek előfordulásának gyakorisága a rendszerben.
A teljesítménycéloknak expliciten tartalmazniuk kell célterhelést. Emellett nem minden felhasználó kap pontosan ugyanazt a teljesítményt, még akkor sem, ha egyszerre fér hozzá a rendszerhez, és ugyanazt a munkát végzi. Ezért az SLO-t százalékok formájában kell kifejezni.
Az SLO például a következő lehet: "Az ügyfélkérések válasza 500 ms @ P90-en belül, legfeljebb 25 K kérés/másodperc betöltésekor".
Az elosztott rendszerek teljesítményhangolási kihívásai
Az elosztott alkalmazások teljesítményproblémáinak diagnosztizálása nagy kihívást jelenthet. Íme néhány a kihívások közül:
Egyetlen üzleti tranzakcióban vagy műveletben általában a rendszer több összetevője vesz részt. Esetenként nehéz átfogó képet kialakítani az egyes műveletekről.
Az erőforrás-felhasználás több csomópontra oszlik el. A konzisztens áttekintéshez a naplókat és a metrikákat egy helyen kell összesíteni.
A felhő rugalmas skálázást tesz lehetővé. Az automatikus skálázás fontos a terhelési csúcsok kezeléséhez, azonban elfedheti a problémákat. Emellett esetenként nehéz eldönteni, mikor melyik összetevőt érdemes skálázni.
A számítási feladatok gyakran nem skálázhatók magok vagy szálak között. Fontos megérteni a számítási feladatok követelményeit, és jobban optimalizált méreteket keresni. Egyes méretek korlátozott magokat és letiltott hipertreadingot kínálnak az egymagos orientált és a magonkénti licencelt számítási feladatok javítása érdekében.
Az egymásra épülő hibák a kiindulási problémánál magasabb szinten is okozhatnak meghibásodást. Emiatt előfordulhat, hogy a probléma első jele egy másik összetevőben jelenik meg, mint ahonnan a probléma kiindult.
Általános ajánlott eljárások
A teljesítményhangolás egyszerre művészet és tudomány, de rendszerszintű megközelítéssel tudományosabbá tehető. Íme néhány ajánlott eljárás:
Engedélyezze a telemetriát a metrikák gyűjtéséhez. Tagolja a kódot. Kövesse a monitorozás ajánlott eljárásait. Használjon korreláló nyomkövetést, hogy megtekinthesse a tranzakciók összes lépését.
Monitorozza a 90/95/99 százalékos értékeket, ne csak az átlagot. Az átlag elfedheti a kiugró értékeket. A metrikák mintavételi sebessége is fontos. Ha a mintavételi sebesség túl alacsony, az elfedheti a problémákat jelző csúcsokat vagy kiugró értékeket.
Egyszerre egy szűk keresztmetszetet teszteljen. Alakítson ki egy hipotézist, és egyszerre egy változó módosításával tesztelje. Ha megszüntet egy szűk keresztmetszetet, az gyakran felfed további szűk keresztmetszeteket magasabb vagy alacsonyabb szinten.
A hibák és újrapróbálkozások jelentős hatással lehetnek a teljesítményre. Ha azt látja, hogy a háttérszolgáltatások szabályozják a rendszert, vertikálisan felskálázhatja vagy optimalizálhatja a használatot (például adatbázis-lekérdezések finomhangolásával).
Keressen gyakori teljesítménnyel kapcsolatos kizárási mintákat.
Keressen lehetőségeket a párhuzamosításra. Az üzenetsorok és az adatbázisok a szűk keresztmetszetek gyakori forrásai. Mindkét esetben segíthet a horizontális skálázás. További információért tekintse meg a horizontális, vertikális vagy funkcionális adatparticionálást ismertető témakört. Keressen olyan gyakori hozzáférésű partíciókat, amelyek kiegyensúlyozatlan olvasási vagy írási terhelésre utalhatnak.
Következő lépések
Tekintse át a teljesítményhangolási forgatókönyveket