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