Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Azure Well-Architected-keretrendszer teljesítmény-hatékonyság ellenőrzőlistájára vonatkozó javaslat:
| PE:07 | Kód és infrastruktúra optimalizálása. Használjon olyan kódot, amely teljesít, és győződjön meg arról, hogy kiszervezést végez a platformon. A kódot és az infrastruktúrát csak az alapvető célra használja, és csak akkor, ha szükséges. |
|---|
Ez az útmutató a kód és az infrastruktúra teljesítményének optimalizálására vonatkozó javaslatokat ismerteti. A kód és az infrastruktúra optimalizálása érdekében az összetevőket csak az alapvető célokra és csak akkor használja, ha szükséges. A kód és az infrastruktúra túlhasználata szükségtelen erőforrás-felhasználást, szűk keresztmetszeteket és lassú válaszokat eredményez. A hatékonysági hiányosságok kompenzálásához több erőforrást kell hozzáadnia ugyanazon feladatok elvégzéséhez.
Definíciók
| Időszak | Definition |
|---|---|
| Concurrency | Ha egyszerre több feladatot vagy folyamatot hajt végre, de nem feltétlenül ugyanabban az időben. |
| CPU-architektúra | A számítógép működését befolyásoló összetevők és alapelvek. |
| Adattömörítés | A fájlok méretének csökkentése redundáns adatok minimalizálásával. |
| Halom | Egy memóriaterület, amelyet futásidejű memóriafoglalásokhoz használnak. |
| Memóriaszivárgás | Ha egy számítási feladat nem tudja felszabadítani a lefoglalt memóriát, miután már nincs szükség a memóriára. |
| Párhuzamosság | Ha egyszerre több feladatot vagy folyamatot hajt végre. |
A kód és az infrastruktúra optimalizálása magában foglalja a kód és a támogató infrastruktúra finomhangolását a teljesítményhatékonyság javítása érdekében. Olyan végrehajtó kódot igényel, amely gyorsan végrehajtja a feladatokat, és nem pazarolja az erőforrásokat. A szükségtelen összetettség elkerülése érdekében egy jól megtervezett infrastruktúrára van szükség, amely gördülékeny. A számítási feladatoknak a platform eredendő képességeit kell használniuk. Ez egy olyan megközelítés, amely segít biztosítani, hogy a kód és az infrastruktúra elsősorban az alapvető célokra, és csak akkor legyen használatban, ha szükséges.
A kód teljesítményének optimalizálása
A kód teljesítményének optimalizálásához módosítsa a kódot az erőforrás-használat csökkentése, a futtatókörnyezet minimalizálása és a teljesítmény növelése érdekében. A kód módosításával javíthatja a szoftverprogramok hatékonyságát és sebességét. Ne maszkolja a teljesítményproblémákat találgatásos erővel. A találgatás azt jelenti, hogy számítási erőforrásokat ad hozzá a kód teljesítményének kompenzálásához, például extra kapacitást ad hozzá a forrás kezelése helyett. Ki kell javítania az optimalizálással kapcsolatos teljesítményproblémákat. A kód teljesítményének optimalizálása segít maximalizálni a rendszererőforrások kihasználtságát, javítja a válaszidőt, csökkenti a késést, és javítja a felhasználói élményt.
Kód hangszerelése
Az eszközkód azt a gyakorlatot jelenti, hogy kódrészleteket vagy kódtárakat ad hozzá olyan kódhoz, amely adatokat gyűjt, és figyeli a kód teljesítményét futásidőben. A kódállapot lehetővé teszi a fejlesztők számára, hogy információkat gyűjtsenek olyan főbb metrikákról, mint az erőforrás-használat (CPU, memóriahasználat) és a végrehajtási idő. A kód rendszerezésével a fejlesztők betekintést nyerhetnek a gyakori kódelérési útvonalakba, azonosíthatják a teljesítmény szűk keresztmetszeteit, és optimalizálhatják a kódot a jobb teljesítményhatékonyság érdekében.
Ideális környezetben a szoftverfejlesztési életciklus korai szakaszában érdemes kódelemzést végeznie. Minél korábban kap egy kódproblémát, annál olcsóbb a megoldás. A kódelemzés lehető legnagyobb részét szeretné automatizálni. Dinamikus és statikus kódelemzési eszközökkel csökkentheti a manuális munkát. Ne feledje azonban, hogy ez a tesztelés még mindig az éles környezet szimulációja. Az éles környezet biztosítja a kódoptimalizálás legtisztább megértését.
Kompromisszum: A kódmonitorozási eszközök valószínűleg növelik a költségeket.
Gyakori elérésű útvonalak azonosítása
A kód rendszerezésével különböző kódútvonalak erőforrás-felhasználását mérheti. Ezek a mérések segítenek azonosítani a gyakori elérésű útvonalakat. A gyakori elérésű útvonalak jelentős hatással vannak a teljesítményre és az erőforrások használatára. Ezek a programok kritikus vagy gyakran végrehajtott szakaszai, amelyek nagy teljesítményt és alacsony késést igényelnek. A gyakori kódelérési útvonalak azonosításához vegye figyelembe az alábbi lépéseket:
Futtatókörnyezeti adatok elemzése: Futásidejű adatok gyűjtése és elemzése a kód olyan területeinek azonosításához, amelyek jelentős erőforrásokat, például PROCESSZOR-, memória- vagy I/O-műveleteket használnak fel. Keressen olyan mintákat vagy kódszakaszokat, amelyeket gyakran hajtanak végre, vagy hosszú időt vesz igénybe.
Teljesítmény mérése: Profilkészítési eszközök vagy teljesítménytesztelési keretrendszerek használatával mérheti a különböző kódútvonalak végrehajtási idejét és erőforrás-felhasználását. Segít azonosítani a szűk keresztmetszeteket és a fejlesztési területeket.
Fontolja meg az üzleti logikát és a felhasználói hatást: Értékelje a különböző kódútvonalak fontosságát az alkalmazás működéséhez vagy kritikus üzleti műveleteihez való relevanciája alapján. Határozza meg, hogy mely kód elérési útjai fontosak a felhasználók számára történő értékszállításhoz vagy a teljesítménykövetelmények teljesítéséhez.
Kódlogika optimalizálása
A kódlogika optimalizálása a kód szerkezetének és kialakításának finomításáról szól, hogy kevesebb erőforrással végezze el a feladatokat. A továbbfejlesztett logika csökkenti a szükségtelen műveleteket. Gyorsabb végrehajtást hoz létre kevesebb erőforrás-használat mellett. Távolítsa el azokat a szükségtelen műveleteket a kód elérési útján, amelyek hatással lehetnek a teljesítményre. Rangsorolja a gyakori elérésű útvonalak optimalizálását, hogy a legnagyobb teljesítményhatékonyság-nyereséget láthassa. A kódlogika optimalizálásához vegye figyelembe a következő stratégiákat:
Szükségtelen függvényhívások eltávolítása: Tekintse át a kódot, és azonosítsa azokat a függvényeket, amelyek nem nélkülözhetetlenek a kívánt funkciókhoz, és negatív hatással lehetnek a teljesítményre. Ha például egy függvényhívás a kód korábbi részében befejezett ellenőrzést hajt végre, eltávolíthatja a szükségtelen érvényesítési függvényhívást.
A naplózási műveletek minimalizálása: A naplózás hasznos lehet a hibakereséshez és az elemzéshez, de a túlzott naplózás hatással lehet a teljesítményre. Értékelje ki az egyes naplózási műveletek szükségességét, és távolítsa el a teljesítményelemzés szempontjából nem kritikus fontosságú szükségtelen naplózási hívásokat.
Hurkok és feltételes feltételek optimalizálása: Elemezze a ciklusokat és a feltételes elemeket a kódban, és azonosítsa a szükségtelen iterációkat vagy feltételeket, amelyek kiküszöbölhetők. Ezeknek a struktúráknak az egyszerűsítése és optimalizálása javíthatja a kód teljesítményét. A ciklusokon belüli függvényhívások minimalizálása és a redundáns számítások kiküszöbölése. Fontolja meg a számítások hurkon kívüli áthelyezését vagy a ciklusok regisztrációjának feloldását.
A szükségtelen adatfeldolgozás csökkentése: Tekintse át a kódot a szükségtelen adatfeldolgozási műveletek, például redundáns számítások vagy átalakítások esetében. A kód hatékonyságának javítása érdekében kiküszöbölheti ezeket a szükségtelen műveleteket.
Adatstruktúrák optimalizálása. Az adatok hatékony tárolásához és lekéréséhez válassza ki a megfelelő adatstruktúrákat, például tömböket, csatolt listákat, fákat és kivonattáblákat. Válassza ki egy adott probléma legjobb adatstruktúráját. A megfelelő adatstruktúra javítja az alkalmazás teljesítményét.
Hálózati kérések minimalizálása: Ha a kód hálózati kéréseket küld, minimalizálja a kérések számát, és optimalizálja a használatukat. Ha lehetséges, batch-kérések, és elkerülheti a szükségtelen oda-visszaútokat a teljesítmény javítása érdekében.
Foglalások minimalizálása: Azonosítsa azokat a területeket, ahol túlzott memóriakiosztás történik. Optimalizálja a kódot a szükségtelen lefoglalások csökkentésével és a meglévő erőforrások újbóli felhasználásával, ha lehetséges. A lefoglalások minimalizálásával javíthatja a memória hatékonyságát és az általános teljesítményt. A programozási nyelvhez használja a megfelelő memóriakezelési és szemétgyűjtési stratégiákat.
Adatstruktúra méretének csökkentése: Felmérheti az adatstruktúrák méretét, például az osztályokat, és azonosíthatja azokat a területeket, ahol lehetséges a csökkentés. Tekintse át az adatkövetelményeket, és szüntesse meg a szükségtelen mezőket vagy tulajdonságokat. Optimalizálja a memóriahasználatot a megfelelő adattípusok kiválasztásával és az adatok hatékony csomagolásával.
Teljesítményoptimalizált SDK-k és kódtárak használata. Natív SDK-k vagy teljesítményoptimalizált kódtárak használata. A natív SDK-k úgy vannak kialakítva, hogy egy platformon vagy keretrendszeren belül kommunikáljanak a szolgáltatásokkal és az erőforrásokkal. A natív felhőbeli SDK-k például jobban működnek a felhőszolgáltatás adatsíkjaival, mint az egyéni API-hozzáféréssel. Az SDK-k kiválóan kezelik a hálózati kéréseket és optimalizálják az interakciókat. A teljesítményoptimalizált kódtárak, például a Math.NET teljesítményoptimalizált függvényeket tartalmaznak. Ha a függvényeket megfelelően alkalmazza, javíthatja a számítási feladat teljesítményét.
Horizontális implementáció: Fontolja meg a horizontális implementációk, például a köztes szoftver vagy a jogkivonat-ellenőrzések hatásait, és mérje fel, hogy ezek negatívan befolyásolják-e a teljesítményt.
Tekintse át a programozási nyelvre vonatkozó teljesítményjavaslatokat. Értékelje ki a kódot ezekkel a javaslatokkal, hogy azonosítsa a fejlesztési területeket.
Kompromisszumok:
- A kód és a gyakori elérésű útvonalak optimalizálásához fejlesztői szakértelemre van szükség a kódokkal kapcsolatos hatékonysági hiányosságok azonosításában, szubjektív, és más feladatokhoz is magas szintű képzettséggel kell rendelkeznie.
- Az SDK-k kényelmesek, és kiküszöbölik az API-k használata bonyolultságát. Az SDK-k azonban korlátozhatják az egyéni kód vezérlési és testreszabási beállításait.
Memóriakezelés optimalizálása
A memóriakezelés optimalizálása magában foglalja a számítási feladatok felhasználási módjának finomítását, lefoglalását és kiadását a memóriaerőforrások hatékonyságának javítása érdekében. A megfelelő memóriakezelés javítja a kód teljesítményét, mivel csökkenti a memóriaműveletek többletterhelését. A hatékony memóriahasználat csökkenti a késést, megakadályozza a rendszer lassulását vagy összeomlását, és maximalizálja a számítási feladatok átviteli sebességét. Fontolja meg az alábbi stratégiákat a memóriakezelés optimalizálásához.
Memóriaproblémák hibakeresése. A memóriaképek alkalmazásmemória-pillanatképek. Egy alkalmazás memóriaállapotát rögzítik egy adott időpontban. A memóriaképek lehetővé teszik a memóriaproblémák visszamenőleges elemzését. Válassza ki a megfelelő memóriaképtípust a diagnosztizálni kívánt probléma jellegének és a rendelkezésre álló erőforrásoknak megfelelően. Összetett, kritikus problémák esetén miniatűr memóriaképeket kell használnia a rutin hibakereséshez és a teljes memóriaképekhez. Ez a stratégia egyensúlyt biztosít az erőforrás-használat és a diagnosztikai képességek között. Számos kódtár-szolgáltatás támogatja a memória hibakeresését. A memóriaelemzést támogató szolgáltatásokat érdemes előnyben részesítenie azokkal a szolgáltatásokkal szemben, amelyek nem. A memóriaproblémák hibakeresésének alapvető lépései a következők:
Memóriaképek rögzítése: Először állítson be egy mechanizmust a memóriaképek rögzítésére az alkalmazás futásideje alatt. A rögzítés manuálisan, automatikusan vagy adott feltételek (például túlzott memóriahasználat) teljesülése esetén aktiválható. Előfordulhat, hogy egyes felhőszolgáltatások már kínálják ezt a folyamatot.
Memóriaképek elemzése: A memóriaképek összegyűjtése után elemezze őket. Számos eszköz segíthet ezeknek a memóriaképeknek a vizsgálatában, például Windows-alkalmazásokhoz készült WinDbg vagy Unix-alapú GDB.
Memóriaszivárgások azonosítása: Összpontosítson a memóriavesztések azonosítására az elemzés során. Memóriavesztés akkor merül fel, ha az alkalmazás lefoglalja a memóriát, de nem tudja felszabadítani, ha már nincs szükség a memóriára. Keressen olyan objektumokat vagy adatstruktúrákat, amelyek akkor is a memóriában maradnak, amikor felszabadítani kell őket.
Javítás és tesztelés: A problémás kód azonosításakor koncentráljon a memóriaproblémák megoldására. A megoldás magában foglalhatja a memória megfelelő felszabadítását, az adatstruktúrák optimalizálását vagy a memóriakezelési eljárások újraértékelését. Győződjön meg arról, hogy a megoldások szigorú tesztelésen mennek keresztül a hatékonyságuk biztosítása érdekében.
Iteráció és monitorozás: A memóriakezelés folyamatos folyamat. Rendszeresen monitorozza az alkalmazás memóriahasználatát, és megőrizze a memóriaképek éles környezetben történő gyűjtését. Rendszeresen tekintse át újra az elemzési és optimalizálási fázisokat, hogy a memóriaproblémák ne jelentkezzenek újra a kód későbbi módosításaival.
A memóriakép-elemzés szoftverfejlesztési életciklusba való beépítésével fokozhatja az alkalmazások megbízhatóságát és hatékonyságát. Segít csökkenteni a memóriával kapcsolatos problémák előfordulásának valószínűségét az éles környezetben.
Memóriafoglalások csökkentése. A memóriafoglalások minimalizálása a kód teljes memóriaigényének csökkentése érdekében. A számítási feladat hatékonyan használhatja ki a rendelkezésre álló memóriát. Kevesebb szükség van arra, hogy a szemétgyűjtő visszanyerje a nem használt memóriát, és csökkenti a szemétgyűjtési ciklusok gyakoriságát és időtartamát. A memóriafoglalások költségesek lehetnek, különösen akkor, ha gyakran hajtja végre őket. Minimalizálja a memóriafoglalásokat, hogy a kód gyorsan és hatékonyan fusson.
A gyorsítótárak a gyakran használt adatokat a processzor közelében tárolják, ami javítja a teljesítményt. A memóriafoglalások minimalizálása esetén kevesebb a gyorsítótárterület, így hatékonyan használhatja a gyorsítótárat. A memóriafoglalások nagy száma csökkentheti az alkalmazás teljesítményét, és hibákat okozhat. A memóriafoglalások minimalizálásának egyéb módjai a következők:
Helyi változók: A memóriahasználat minimalizálása érdekében globális változók helyett helyi változókat használjon.
Lusta inicializálás: Lusta inicializálás implementálása az objektumok vagy erőforrások létrehozásának elhalasztásához, amíg szükség nem lesz rájuk.
Pufferek: A pufferek hatékony kezelése a nagy memóriapufferek kiosztásának elkerülése érdekében.
Objektumkészletezés: Fontolja meg az objektumkészletezést a nagyméretű objektumok újbóli felhasználásához ahelyett, hogy lefoglalja és felszabadítja őket.
További információ: Memóriafoglalások csökkentése és a Windows rendszereken futó nagy objektum halom.
Egyidejűség és párhuzamosság használata
Az egyidejűség és a párhuzamosság használata több feladat vagy folyamat egyidejű vagy egymást átfedő végrehajtását foglalja magában a számítási erőforrások hatékony felhasználása érdekében. Ezek a technikák növelik az általános átviteli sebességet és a számítási feladatok feldolgozható tevékenységeinek számát. Ha egyszerre vagy párhuzamosan futtat feladatokat, az csökkenti az alkalmazás futásidejét, csökkenti a késést, és növeli a válaszidőt. Az egyidejűség és a párhuzamosság lehetővé teszi a számítási erőforrások, például a processzormagok vagy az elosztott rendszerek hatékony kihasználását. Az egyidejűség és a párhuzamosság hatékonyan osztja el a számítási feladatot a számítási erőforrások között.
Használjon párhuzamosságot. A párhuzamosság az a képesség, hogy a rendszer egyszerre több feladatot vagy folyamatot aktiváljon több számítási erőforráson. A párhuzamosság kisebb feladatokra osztja a számítási feladatokat, amelyek párhuzamosan futnak. A párhuzamosságot olyan technikákkal érheti el, mint a többprocesszoros vagy elosztott számítástechnika. Feladatok elosztása többmagos processzorok között a számítási feladatok kezelésének optimalizálása érdekében. Optimalizálja a kódot a processzorarchitektúra, a szálkezelési modellek és a többmagos processzorok előnyeinek kihasználásához. Ha párhuzamosan futtat kódot, a teljesítmény javul, mivel a számítási feladat több mag között van elosztva.
Egyidejűség használata. Az egyidejűség az a képesség, hogy a rendszer több feladatot vagy folyamatot is futtathat. Az egyidejűség lehetővé teszi, hogy a program különböző részei egymástól függetlenül haladjanak, ami javíthatja az általános teljesítményt. Az egyidejűséget olyan technikákkal valósíthatja meg, mint a többszálas használat, amelyben több szál fut egyszerre egyetlen folyamaton belül. Aszinkron programozást is használhat, amelyben a tevékenységek egyidejűleg aktiválódnak.
Aszinkron programozás: Az aszinkron programozás olyan módszer, amely a fő szál blokkolása nélkül aktiválja a feladatokat. Az aszinkron programozás lehetővé teszi a programok számára a tevékenységek aktiválását, miközben a hosszú ideig futó műveletek befejezésére várnak. Az aszinkron programozással a program több feladatot is kezdeményezhet, és megvárhatja, amíg aszinkron módon befejeződnek. A programnak nem kell megvárnia az egyes tevékenységek befejezését, mielőtt továbblépne a következőre.
A programozási nyelvtől és a platformtól függően számos aszinkron programozási technika és minta létezik. Az egyik gyakori megközelítés az aszinkron kulcsszavak és szerkezetek használata, például
asyncésawait, olyan nyelveken, mint a C#. Ezekkel a kulcsszavakkal aszinkron metódusokat határozhat meg. HTTP-forgalom esetén fontolja meg az Aszinkron Request-Reply mintát.Számos keretrendszer és kódtár biztosít beépített támogatást az aszinkron programozáshoz. A .NET platformon például aszinkron műveleteket implementálhat olyan mintákkal, mint Task-Based Aszinkron minta és Event-Based Aszinkron minta. Az aszinkron programozás konkrét megvalósítása az alkalmazás programozási nyelvétől, platformjától és követelményeitől függően változik.
Üzenetsorok: Az üzenetsor egy tárolópuffer, amely a kérelmező összetevő (gyártó) és a számítási feladat feldolgozó összetevője (fogyasztója) között található. Egyetlen üzenetsorhoz több felhasználó is lehet. A feladatok növekedésével skáláznia kell a fogyasztókat a kereslet kielégítése érdekében. A gyártó várólistába helyezi a feladatokat. Az üzenetsor addig tárolja a feladatokat, amíg egy felhasználónak nincs kapacitása. Az üzenetsorok gyakran a legjobb módja annak, hogy a munkát átadják egy olyan feldolgozási szolgáltatásnak, amely a legmagasabb keresletet tapasztalja. További információ: Queue-Based Terhelés simítási mintája , a Storage-üzenetsorok és a Service Bus-üzenetsorok.
Kapcsolatkészletezés használata
A kapcsolatkészletezés a meglévő adatbázis-kapcsolatok újbóli használata ahelyett, hogy minden kéréshez új kapcsolatot hoz létre. Az adatbázishoz való csatlakozás költséges lehet. Hitelesített hálózati kapcsolatot kell létrehoznia a távoli adatbázis-kiszolgálóval. Az adatbázis-kapcsolatok különösen drágák az olyan alkalmazások esetében, amelyek gyakran nyitnak meg új kapcsolatokat. A kapcsolatkészletezés újra felhasználja a meglévő kapcsolatokat, és kiküszöböli az új kapcsolatok minden kéréshez való megnyitásának költségeit. A kapcsolatkészletezés csökkenti a kapcsolat késését, és lehetővé teszi a magas adatbázis-átviteli sebességet (másodpercenkénti tranzakciókat) a kiszolgálón. Olyan készletméretet kell választania, amely a jelenleginél több kapcsolatot képes kezelni. A cél az, hogy a kapcsolatkészlet gyorsan kezelje az új bejövő kéréseket.
A kapcsolatkészletezési korlátok ismertetése. Egyes szolgáltatások korlátozzák a hálózati kapcsolatok számát. Ha túllépi ezt a korlátot, a kapcsolatok lelassulhatnak vagy leállhatnak. A kapcsolatkészletezéssel rögzített kapcsolatkészletet hozhat létre indításkor, majd fenntarthatja ezeket a kapcsolatokat. Az alapértelmezett készletméret sok esetben csak néhány olyan kapcsolatból állhat, amelyek az alapszintű tesztelési forgatókönyvekben gyorsan végrehajthatók. Előfordulhat, hogy az alkalmazás kihasználja az alapértelmezett készletméretet, és szűk keresztmetszetet okoz. Létre kell hoznia egy készletméretet, amely megfelel az egyes alkalmazáspéldányokon támogatott egyidejű tranzakciók számának.
Tesztelje a kapcsolatkészletet. Minden adatbázis- és alkalmazásplatform kissé eltérő követelményekkel rendelkezik a készlet beállításához és használatához. Tesztelje a kapcsolatkészletet, hogy a terhelés alatt hatékonyan működjön.
Kockázat: A kapcsolatkészletezés a készlet töredezettségét okozhatja, és csökkentheti a teljesítményt.
Háttérfeladatok optimalizálása
Számos alkalmazáshoz a felhasználói felülettől függetlenül futó háttérfeladatok szükségesek. Az alkalmazás elindíthatja a feladatot, és folytathatja a felhasználóktól érkező interaktív kérések feldolgozását. A háttérfeladatok közé tartoznak például a kötegelt feladatok, a processzorigényes feladatok és a hosszú ideig futó folyamatok, például a munkafolyamatok. A háttérfeladatok nem tilthatják le az alkalmazást, és nem okozhatnak inkonzisztenciákat a rendszer terhelése alatt álló késleltetett működés miatt. A teljesítmény javítása érdekében skálázhatja a háttérfeladatokat futtató számítási példányokat. További információ: Háttérfeladatok , skálázási és teljesítménybeli szempontok.
Infrastruktúra teljesítményének optimalizálása
Az infrastruktúra teljesítményének optimalizálása az infrastruktúra elemeinek továbbfejlesztését és módosítását jelenti, így biztosítva a maximális működést és az erőforrások optimális felhasználását a számítási feladatokhoz. Az infrastruktúra finomhangolásával minimalizálhatja a hulladékot, csökkentheti a késéseket, és többet érhet el a rendelkezésre álló erőforrásokkal. Biztosítja, hogy a számítási feladatok megbízhatóan és gyorsan fussanak, ami jobb felhasználói élményt és költségmegtakarítást eredményez. Az infrastruktúra teljesítményének optimalizálásához vegye figyelembe a következő stratégiákat:
Használati korlátok hozzáadása. A számítási feladatok egyes összetevőinek használati korlátait implementálhatja. Az instabil podok eltávolításához például meghatározhatja a pod cpu- és memóriakorlátjait az Azure Kubernetes Service-ben (AKS). A teljesítmény optimalizálása érdekében memóriakorlátokat határozhat meg Java virtuális gépeken (virtuális gépeken).
Az infrastruktúra egyszerűsítése. Egyszerűsítse le a számítási feladatot, hogy csökkentse az interakciós, függőségi és kompatibilitási problémák lehetőségét. A számítási feladatok leegyszerűsítésekor optimalizálhatja a memória, a feldolgozási teljesítmény és a tárolás erőforrás-kihasználtságát.
Csökkentse a terhelést. A számítási feladatok terhelésének csökkentése érdekében minimalizálja az alkalmazásra vonatkozó igényeket, és engedélyezze az erőforrások számára az elsődleges feladatok végrehajtását. Gyakori eljárás például, hogy a kódban vagy az egyes számítási példányokon ne futtasson biztonsági megoldásokat. Ehelyett a webkiszolgálóknak HTTP-kéréseket kell kiszolgálnia. A webalkalmazási tűzfalak és az átjáróerőforrások képesek a biztonsági ellenőrzések kezelésére. A következő stratégiák segítenek csökkenteni a számítási feladat terhelését:
Végleges konzisztencia: Egy végleges konzisztenciamodell bevezetése a teljesítmény növeléséhez azáltal, hogy lehetővé teszi az adatok kissé dátumozottságát. A végleges konzisztencia csökkenti az állandó adatfrissítések cpu-ciklusokra és hálózati sávszélességre vonatkozó azonnali igényét.
Feladatok delegálása: Kiszolgálói feladatok delegálása ügyfelek vagy közvetítők számára, például keresési indexek és gyorsítótárak. Delegálhat olyan feladatokat, mint az adatok rendezése, az adatok szűrése vagy a nézetek megjelenítése. Amikor kiszervezi ezeket a feladatokat, csökkentheti a kiszolgálók számítási feladatait, és javíthatja a teljesítményt.
Optimalizálja a hálózatot. A számítási feladatok hálózatának teljesítményre való optimalizálásához konfigurálja és finomhangolja a hálózati infrastruktúrát. Győződjön meg arról, hogy a számítási feladat a legmagasabb szintű hatékonysággal működik.
Hálózati protokollok: Frissítsen olyan modern protokollokra, mint a HTTP/2, amely lehetővé teszi több kérés egyetlen kapcsolaton keresztüli küldését. A modern protokollok csökkentik az új kapcsolatok létrehozásának többletterhelését.
Kompromisszum: A modern protokollok kizárhatják a régebbi ügyfeleket.
Hálózati csevegés: A batch hálózati kérések együttesen csökkentik a kérések számát. Ahelyett, hogy több kis kérést készítenél, kombináld őket nagyobb kérésekké a hálózati terhelés csökkentése érdekében.
Adatbázis-lekérdezések: Győződjön meg arról, hogy az adatbázis-lekérdezések csak a szükséges információkat kérik le. Kerülje a nagy mennyiségű szükségtelen adat beolvasását, ami nagyobb hálózati forgalomhoz és lassú teljesítményhez vezethet.
Statikus adatok: Tartalomkézbesítési hálózat használatával gyorsítótárazza a felhasználókhoz közel álló, gyakran használt statikus tartalmakat. Az adatok gyorsítótárazásakor nem kell nagy távolságokon haladnia. A gyorsítótárazás javítja a válaszidőket, és csökkenti a hálózati forgalmat.
Naplógyűjtés: Csak azokat a naplóadatokat gyűjtse össze és őrizze meg, amelyek a követelmények támogatására szükségesek. Az adatgyűjtési szabályok konfigurálása és tervezési szempontok megvalósítása a Log Analytics-költségek optimalizálása érdekében.
Adattömörítés: HTTP-tartalmak és fájladatok tömörítése és kötegelése az ügyfelek és kiszolgálók közötti gyors átvitel érdekében. A tömörítés csökkenti azokat az adatokat, amelyeket egy lap vagy API visszaad, és visszaküld a böngészőnek vagy az ügyfélalkalmazásnak. A tömörítés optimalizálja a hálózati forgalmat, ami felgyorsíthatja az alkalmazáskommunikációt.
Kompromisszum: A tömörítés kiszolgálóoldali és ügyféloldali feldolgozást ad hozzá. Az alkalmazásnak tömörítenie, küldenie és kibontania kell az adatokat. A csoportos küldésű kommunikáció vagy a több címzettnek való kommunikáció dekompressziós többletterhelést okozhat. Az adattömörítés implementálása előtt és után tesztelnie és mérnie kell a teljesítményingadozásokat, hogy megállapítsa, megfelelő-e a számítási feladathoz. További információ: Választömörítés a ASP.NET Core-ban.
Az Azure megkönnyítése
Eszközkód: Az Azure Monitor Application Insights támogatja az automatikus rendszerezést (automatikus beépítést) és az alkalmazáskód manuális rendszerezését. Az autoinstrumentáció lehetővé teszi a telemetriai adatgyűjtést az alkalmazás kódjának érintése nélkül. A manuális rendszerállapothoz kódmódosításra van szükség az Application Insights vagy az OpenTelemetry API implementálásához. Az Application Insights Profiler használatával optimalizálhatja a gyakori elérésű útvonalakat.
Kódlogika optimalizálása: Az Azure SDK-kat és kódtárakat kínál különböző programozási nyelvek számára az Azure-szolgáltatások használatához. Az SDK-k használatával egyszerűsítheti az alkalmazások és az Azure-erőforrások közötti interakciókat. Az SDK-k optimális interakciót biztosítanak az Azure-szolgáltatásokkal, ami csökkenti a késést és javítja a hatékonyságot.
A memóriakezelés optimalizálása: Az Application Insights intelligens észlelési funkciójával elemezheti a memóriahasználatot, és segíthet azonosítani és kezelni a memóriaszivárgásokat.
Az Azure App Service profilkészítővel és memóriakép-gyűjtési és elemzési funkcióval rendelkezik. Az App Service autohealing funkciója automatikusan képes memóriaképeket és a .NET- és Java-alkalmazások profiljának nyomkövetését átvenni.
Egyidejűség és párhuzamosság használata: A különböző Azure-szolgáltatások egyedi támogatást nyújtanak az egyidejűséghez, például az Azure Cosmos DB-t, az Azure Functionst és a Blob Storage-t. A párhuzamosság érdekében az AKS támogatja a tárolóalapú alkalmazások üzembe helyezését, ami javítja a párhuzamos feldolgozást.
Az Azure Batch egy felhőalapú feladatütemezési szolgáltatás, amellyel az infrastruktúra beállítása nélkül engedélyezheti a párhuzamos és nagy teljesítményű számításokat. További információ: Háttérfeladatok.
Az infrastruktúra teljesítményének optimalizálása: Azure Resource Manager-sablonok implementálása az infrastruktúra kóddal történő definiálásához és üzembe helyezéséhez. Ezekkel a sablonokkal hatékony, megismételhető és konzisztens erőforrás-üzembe helyezéseket valósíthat meg. Az Azure Policy szabályozási képességeket biztosít annak biztosítására, hogy az erőforrások üzembe helyezése megfeleljen a szervezeti ajánlott eljárásoknak és szabványoknak.
Az aszinkron programozáshoz használjon skálázható sorkezelési szolgáltatásokat, például az Azure Queue Storage-t és az Azure Service Bust az aszinkron programozás megkönnyítéséhez. A feladatokat várólistára helyezheti, és egymástól függetlenül feldolgozhatja őket. Az aszinkron műveletek támogatásához az Azure Marketplace harmadik féltől származó üzenetsorokat és eszközöket kínál, amelyeket integrálhat az Azure-szolgáltatásokkal.
Kapcsolódó hivatkozások
- AKS
- Az Application Insights intelligens észlelési funkciója
- Aszinkron Request-Reply minta
- Memóriafoglalások elkerülése
- Azure Batch
- Azure Policy
- Azure Resource Manager-sablonok
- Azure SDK-k
- Háttérfeladatok
- Háttérfeladatok skálázása és teljesítményével kapcsolatos szempontok
- Fájladatok tömörítése
- HTTP-tartalom tömörítése
- Pod CPU- és memóriakorlátainak meghatározása
- Event-Based aszinkron minta
- Java virtuális gépek (virtuális gépek)
- Nagy objektum halom
- Készlet töredezettsége
- Queue-Based terhelés simítási mintája
- Választömörítés a ASP.NET Core-ban
- Tárolási üzenetsorok és Service Bus-üzenetsorok
- Task-Based aszinkron minta
Teljesítményhatékonyság ellenőrzőlista
Tekintse meg a javaslatok teljes készletét.