Lassú alkalmazásteljesítmény-problémák elhárítása a Azure App Service
Ez a cikk segít elhárítani az alkalmazások lassú teljesítményével kapcsolatos problémákat Azure App Service.
Ha a cikk bármely pontján további segítségre van szüksége, forduljon az Azure szakértőihez az MSDN Azure-ban és a Stack Overflow fórumokon. Másik lehetőségként Azure-támogatás incidenst is beküldhet. Nyissa meg az Azure támogatási webhelyét , és kattintson a Támogatás kérése elemre.
Hibajelenség
Az alkalmazás böngészésekor a lapok lassan töltődnek be, és néha időtúllépés is előfordul.
Ok
Ezt a problémát gyakran az alkalmazásszintű problémák okozzák, például:
- hosszú ideig tartó hálózati kérések
- az alkalmazáskód- vagy adatbázis-lekérdezések nem hatékonyak
- alkalmazás magas memóriát/CPU-t használ
- az alkalmazás kivétel miatt összeomlik
Hibaelhárítási lépések
A hibaelhárítás három különböző feladatra osztható, sorrendben:
App Service minden lépésnél különböző lehetőségeket kínál.
1. Az alkalmazás viselkedésének megfigyelése és monitorozása
Szolgáltatásállapot nyomon követése
A Microsoft Azure minden alkalommal közzétehető, amikor szolgáltatáskimaradás vagy teljesítménycsökkenés történik. A szolgáltatás állapotát a Azure Portal követheti nyomon. További információ: Szolgáltatás állapotának nyomon követése.
Az alkalmazás monitorozása
Ezzel a beállítással megállapíthatja, hogy az alkalmazásnak vannak-e problémái. Az alkalmazás paneljén kattintson a Kérések és hibák csempére. A Metrika panelen az összes felvehető metrika látható.
Az alkalmazáshoz monitorozni kívánt metrikák némelyike a következők:
- Átlagos memória-munkakészlet
- Válaszidő
- Processzoridő
- Memória-munkakészlet
- Kérelmek
További információkért lásd:
Webes végpont állapotának monitorozása
Ha az alkalmazást a Standard tarifacsomagban futtatja, App Service lehetővé teszi két végpont monitorozását három földrajzi helyről.
A végpontfigyelés olyan földrajzilag elosztott helyekről konfigurálja a webteszteket, amelyek a webes URL-címek válaszidejét és üzemidejét tesztelik. A teszt http GET műveletet hajt végre a webes URL-címen az egyes helyek válaszidejének és üzemidejének meghatározásához. Minden konfigurált hely öt percenként futtat egy tesztet.
Az üzemidőt HTTP-válaszkódokkal figyeli, a válaszidőt pedig ezredmásodpercben méri a rendszer. A monitorozási teszt meghiúsul, ha a HTTP-válaszkód 400-nál nagyobb vagy egyenlő, vagy ha a válasz több mint 30 másodpercet vesz igénybe. A végpont akkor tekinthető elérhetőnek, ha a monitorozási tesztjei az összes megadott helyről sikeresek.
A beállításához lásd: Alkalmazások figyelése Azure App Service.
Emellett tekintse meg az Azure-webhelyek naprakészen tartását és a végpontfigyelést – Stefan Schackowval című videót a végpontfigyelésről.
Alkalmazásteljesítmény-monitorozás bővítményekkel
Az alkalmazás teljesítményét webhelybővítmény használatával is monitorozhatja.
Minden App Service alkalmazás bővíthető felügyeleti végpontot biztosít, amely lehetővé teszi a webhelybővítményként üzembe helyezett hatékony eszközök használatát. A bővítmények a következők:
- Forráskódszerkesztők, például az Azure DevOps.
- Felügyeleti eszközök csatlakoztatott erőforrásokhoz, például egy alkalmazáshoz csatlakoztatott MySQL-adatbázishoz.
Azure-alkalmazás Insights egy teljesítménymonitorozási webhelybővítmény, amely szintén elérhető. Az Application Insights használatához újra kell építenie a kódot egy SDK-val. Olyan bővítményt is telepíthet, amely további adatokhoz biztosít hozzáférést. Az SDK lehetővé teszi, hogy kódot írjon az alkalmazás használatának és teljesítményének részletesebb monitorozásához. További információ: Teljesítmény monitorozása webalkalmazásokban.
2. Adatgyűjtés
App Service diagnosztikai funkciókat biztosít a webkiszolgálóról és a webalkalmazásból származó adatok naplózásához. Az információk a webkiszolgálók diagnosztikáira és az alkalmazások diagnosztikáira oszlanak.
Webkiszolgáló diagnosztikájának engedélyezése
A következő típusú naplókat engedélyezheti vagy tilthatja le:
- Részletes hibanaplózás – A hibát jelző HTTP-állapotkódok részletes hibaadatai (400-os vagy újabb állapotkód). Ez olyan információkat tartalmazhat, amelyek segíthetnek meghatározni, hogy a kiszolgáló miért visszaadta a hibakódot.
- Sikertelen kérelmek nyomon követése – Részletes információk a sikertelen kérelmekről, beleértve a kérés feldolgozásához használt IIS-összetevők nyomkövetését és az egyes összetevőkben töltött időt. Ez akkor lehet hasznos, ha megpróbálja javítani az alkalmazás teljesítményét, vagy elkülöníti, hogy mi okozza egy adott HTTP-hibát.
- Webkiszolgáló naplózása – A W3C kiterjesztett naplófájlformátumot használó HTTP-tranzakciókra vonatkozó információk. Ez akkor hasznos, ha általános alkalmazásmetrikákat határoz meg, például a kezelt kérések számát vagy egy adott IP-címről érkező kérelmek számát.
Alkalmazásdiagnosztika engedélyezése
Számos lehetőség van az alkalmazásteljesítmény-adatok gyűjtésére App Service, az alkalmazás élő profilkészítésére a Visual Studióból, vagy módosíthatja az alkalmazás kódját további információk és nyomkövetések naplózásához. A beállításokat az alapján választhatja ki, hogy mennyi hozzáférése van az alkalmazáshoz, és hogy mit figyelt meg a monitorozási eszközökben.
Az Application Insights Profiler használata
Engedélyezheti az Application Insights Profiler számára a részletes teljesítménykövetések rögzítését. Elérheti az öt nappal ezelőtt rögzített nyomkövetéseket, amikor ki kell vizsgálnia a múltban történt problémákat. Ezt a lehetőséget akkor választhatja, ha hozzáféréssel rendelkezik az alkalmazás Application Insights-erőforrásához a Azure Portal.
Az Application Insights Profiler az egyes webes hívások válaszidejének statisztikáit és nyomkövetéseit tartalmazza, amelyek azt jelzik, hogy melyik kódsor okozta a lassú válaszokat. Előfordulhat, hogy a App Service alkalmazás lassú, mert bizonyos kódokat a rendszer nem teljesítméni módon ír. Ilyenek például a párhuzamosan futtatható szekvenciális kód és a nem kívánt adatbázis-zárolási versengések. A kódban található szűk keresztmetszetek eltávolítása növeli az alkalmazás teljesítményét, de bonyolult nyomkövetések és naplók beállítása nélkül nehezen észlelhetők. Az Application Insights Profiler által gyűjtött nyomkövetések segítenek azonosítani a kódsorokat, amelyek lelassítják az alkalmazást, és leküzdik ezt a kihívást App Service alkalmazások esetében.
További információ: Élő alkalmazások profilozása Azure App Service az Application Insights használatával.
Távoli profilkészítés használata
A Azure App Service a webalkalmazások, AZ API-alkalmazások, a mobil háttérrendszerek és a WebJobs távolról is profilt készíthetnek. Akkor válassza ezt a lehetőséget, ha rendelkezik hozzáféréssel az alkalmazás-erőforráshoz, és tudja, hogyan reprodukálhatja a problémát, vagy ha tudja, hogy pontosan milyen időintervallumban jelentkezik a teljesítményprobam.
A távoli profilkészítés akkor hasznos, ha a folyamat processzorhasználata magas, és a folyamat a vártnál lassabban fut, vagy a HTTP-kérések késése a szokásosnál magasabb, távolról profilizálhatja a folyamatot, és lekérheti a cpu-mintavételezési hívásvermeket a folyamattevékenység és a gyakori elérésű útvonalak elemzéséhez.
További információ: Távoli profilkészítés támogatása Azure App Service.
Diagnosztikai nyomkövetések manuális beállítása
Ha rendelkezik hozzáféréssel a webalkalmazás forráskódhoz, az alkalmazásdiagnosztika lehetővé teszi a webalkalmazás által előállított információk rögzítését. ASP.NET alkalmazások a System.Diagnostics.Trace
osztály használatával naplózhatják az adatokat az alkalmazásdiagnosztikai naplóba. Azonban módosítania kell a kódot, és újra üzembe kell helyeznie az alkalmazást. Ez a módszer akkor ajánlott, ha az alkalmazás tesztelési környezetben fut.
Az alkalmazás naplózásra való konfigurálásával kapcsolatos részletes útmutatásért lásd: Diagnosztikai naplózás engedélyezése alkalmazásokhoz Azure App Service.
A diagnosztikai eszköz használata
App Service intelligens és interaktív felületet biztosít az alkalmazás konfiguráció nélküli hibaelhárításához. Amikor problémákba ütközik az alkalmazással, a diagnosztikai eszköz rámutat arra, hogy mi a baj, ha a megfelelő információkhoz vezet, hogy könnyebben és gyorsabban elhárítsa és elhárítsa a problémát.
A App Service diagnosztika eléréséhez lépjen a App Service alkalmazáshoz vagy App Service Environment a Azure Portal. A bal oldali navigációs sávon kattintson a Problémák diagnosztizálása és megoldása elemre.
A Kudu hibakeresési konzol használata
App Service tartalmaz egy hibakeresési konzolt, amellyel hibakeresésre, keresésre, fájlok feltöltésére és JSON-végpontokra is használhatja a környezettel kapcsolatos információk lekéréséhez. Ezt a konzolt Kudu-konzolnak vagy az alkalmazás SCM-irányítópultjának nevezzük.
Ezt az irányítópultot a https://< Your alkalmazásnév.scm.azurewebsites.net/> hivatkozásra kattintva érheti el.
Néhány dolog, amit a Kudu nyújt:
- az alkalmazás környezeti beállításai
- naplóstream
- diagnosztikai memóriakép
- hibakeresési konzol, amelyen PowerShell-parancsmagokat és alapszintű DOS-parancsokat futtathat.
A Kudu másik hasznos funkciója, hogy abban az esetben, ha az alkalmazás első esélyt ad a kivételeknek, a Kudu és a SysInternals eszköz, a Procdump használatával memóriaképeket hozhat létre. Ezek a memóriaképek a folyamat pillanatképei, és gyakran segíthetnek az alkalmazás bonyolultabb problémáinak elhárításában.
A Kuduban elérhető funkciókkal kapcsolatos további információkért lásd: Az Azure DevOps-eszközökről, amelyekről tudnia kell.
3. A probléma elhárítása
Az alkalmazás skálázása
A Azure App Service nagyobb teljesítmény és átviteli sebesség érdekében módosíthatja azt a skálát, amelyen az alkalmazást futtatja. Az alkalmazások vertikális felskálázása két kapcsolódó műveletből áll: a App Service csomag magasabb tarifacsomagra való módosítása és bizonyos beállítások konfigurálása a magasabb tarifacsomagra való váltás után.
A skálázással kapcsolatos további információkért lásd: Alkalmazás skálázása Azure App Service.
Emellett dönthet úgy is, hogy egynél több példányon futtatja az alkalmazást. A horizontális felskálázás nemcsak több feldolgozási képességet biztosít, hanem bizonyos mértékű hibatűrést is biztosít. Ha a folyamat leáll az egyik példányon, a többi példány továbbra is kiszolgálja a kéréseket.
Beállíthatja, hogy a skálázás manuális vagy automatikus legyen.
Az AutoHeal használata
Az AutoHeal a választott beállítások (például konfigurációmódosítások, kérések, memóriaalapú korlátok vagy a kérés végrehajtásához szükséges idő) alapján újra feldolgozja az alkalmazás feldolgozófolyamatát. A legtöbb esetben a folyamat újrahasznosítása a leggyorsabb módja a probléma helyreállításának. Bár az alkalmazást bármikor újraindíthatja közvetlenül a Azure Portal belülről, az AutoHeal automatikusan elvégzi. Mindössze néhány eseményindítót kell hozzáadnia az alkalmazás gyökér web.config. Ezek a beállítások ugyanúgy működnek akkor is, ha az alkalmazás nem .NET-alkalmazás.
További információ: Azure-webhelyek automatikus javítása.
Az alkalmazás újraindítása
Az újraindítás gyakran a legegyszerűbb módja az egyszeri problémák utáni helyreállításnak. Az Azure Portal az alkalmazás panelén megnyílik az alkalmazás leállítására vagy újraindítására vonatkozó lehetőség.
Az alkalmazást Azure PowerShell is kezelheti. További információ: Az Azure PowerShell használata az Azure Resource Manager eszközzel.