Teljesítménytesztelés és ellentesztelés felhőalkalmazásokhoz
A teljesítménycsökkentők, hasonlóan a tervezési mintákhoz, gyakran hibás folyamatok és implementációk a szervezeteken belül. Ezek olyan gyakori eljárások, amelyek skálázhatósági problémákat okozhatnak, ha egy alkalmazás nyomás alatt áll. Ezeknek a gyakorlatoknak a ismerete segíthet leegyszerűsíteni a magas szintű fogalmak kommunikációját a szoftveres szakemberek között, és az antipatternek ismerete hasznos lehet a kód áttekintése vagy a teljesítményproblémák diagnosztizálása során.
Íme egy gyakori forgatókönyv: Az alkalmazások jól viselkednek a teljesítménytesztelés során. Azután kikerül az éles rendszerre, és elkezd valós számítási feladatokkal foglalkozni. Ekkor kezd rosszul teljesíteni – elutasítja a felhasználói kéréseket, elakad vagy kivételeket vet ki. A fejlesztőcsapat két kérdéssel néz szembe:
- Miért nem került elő ez a működési probléma a tesztelés során?
- Hogyan lehet kijavítani?
Az első kérdésre adott válasz egyértelmű. A tesztkörnyezetekben nehéz a valós felhasználókat, a viselkedésmintáikat és az általuk végzett munkamennyiségeket megfelelően szimulálni. Az egyetlen biztos módja a rendszerek terhelés alatti működésének megértésére, ha éles környezetben vetjük őket vizsgálat alá. Ezzel nem azt állítjuk, hogy nem érdemes teljesítménytesztelést végezni. A teljesítménytesztelés kulcsfontosságú az alapkonfiguráció teljesítménymetrikáinak lekéréséhez. Emellett azonban az éles környezetben fellépő teljesítményproblémák megfigyelésére és korrigálására is fel kell készülni.
A második kérdés, a probléma megoldása azonban nem ilyen egyértelmű. Itt rengeteg tényező közrejátszhat, és néha a probléma csak bizonyos körülmények között jelentkezik. A rendszerállapot figyelése és a naplózás kulcsfontosságú a kiváltó okok kimutatásához, azonban nem árt tudni, hogy mit keressünk.
A Microsoft Azure-ügyfelekkel folytatott együttműködés során azonosítottunk néhány gyakori teljesítményproblémát, amelyekkel az ügyfelek az éles környezetekben találkoznak. Mindegyik ilyen kizárási minta esetében leírjuk, hogy az adott minta jellemzően miért jelenik meg, mik a tünetei, és milyen technikákkal lehet megoldani a problémát. Olyan mintakódot is biztosítunk, amely az antipattern és a javasolt méretezhetőségi megoldást is szemlélteti.
Ezen antipatternek némelyike nyilvánvalónak tűnhet, amikor elolvassa a leírásokat, de gyakrabban fordulnak elő, mint gondolná. Néha előfordul, hogy az alkalmazás kialakítása a helyi környezetben működött, a felhőben azonban nem sikerül megfelelően a méretezése. Az is megtörténhet, hogy az alkalmazás kialakítása kezdetben letisztult és problémamentes, az új funkciók hozzáadásával azonban beférkőzik egy vagy több kizárási minta. Ez az útmutató segíthet azonosítani és korrigálni ezeket a mintákat, bármi legyen is a kiváltó okuk.
Kizárási minták katalógusa
Íme az azonosított antipatternek listája:
Kizárási minta | Leírás |
---|---|
Foglalt adatbázis | Túl sok feldolgozás van kiszervezve egy adattárba. |
Foglalt előtér | Az erőforrás-igényes feladatok áthelyezése a háttérszálakra. |
Forgalmas I/O | Sok kisebb hálózati kérés folyamatos küldése. |
Felesleges beolvasások | A szükségesnél több adat lekérése, ami szükségtelen I/O működést eredményez. |
Nem megfelelő példányosítás | Olyan objektumok ismételt létrehozása és megsemmisítése, amelyeket amúgy megosztani és újrahasználni kellene. |
Monolitikus adatmegőrzés | Egyazon adattár használata nagyon eltérő használati mintákkal rendelkező adatokhoz. |
Nincs gyorsítótárazás | Az adatok gyorsítótárazása nem valósul meg. |
Zajos szomszéd | Egyetlen bérlő aránytalan mennyiségű erőforrást használ. |
Storm újrapróbálkozás | Túl gyakran próbálkozik újra a sikertelen kérésekkel egy kiszolgálóra. |
Szinkron I/O | A hívó szál blokkolása az I/O végrehajtása során. |
Következő lépések
További információ a teljesítmény-finomhangolásról: Elosztott alkalmazások teljesítményének finomhangolása