A lassú alkalmazások teljesítményével kapcsolatos problémák elhárítása az Azure App Service szolgáltatásban
Ez a cikk segít elhárítani Azure-alkalmazás Szolgáltatás lassú alkalmazásteljesítményével kapcsolatos problémákat.
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órumain. Másik lehetőségként Azure-támogatás incidenst is beszedhet. Nyissa meg az Azure támogatási webhelyét , és kattintson a Támogatás kérése elemre.
Tünet
Az alkalmazás böngészésekor a lapok lassan töltődnek be, és néha időtúllépést is okoznak.
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
- nagy memória-/CPU-igényű alkalmazás
- az alkalmazás egy kivétel miatt összeomlik
Hibaelhárítási lépések
A hibaelhárítás három különböző tevékenységre osztható szekvenciális sorrendben:
Az 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éteszi, amikor szolgáltatáskimaradás vagy teljesítménycsökkenés történik. A szolgáltatás állapotát az Azure Portalon követheti nyomon. További információ: Szolgáltatás állapotának nyomon követése.
Az alkalmazás figyelése
Ezzel a beállítással megállapíthatja, hogy az alkalmazás problémákat tapasztal-e. Az alkalmazás paneljén kattintson a Kérések és hibák csempére. A Metrika panelen minden felvehető metrika látható.
Az alkalmazáshoz esetleg figyelni kívánt metrikák némelyike a következő:
- Átlagos memória-munkakészlet
- Válaszidő
- Processzoridő
- Memória-munkakészlet
- Kérelmek
További információk:
Webes végpont állapotának figyelése
Ha az alkalmazást a Standard tarifacsomagban futtatja, az App Service segítségével három földrajzi helyről figyelhet két végpontot.
A végpontfigyelés olyan földrajzilag elosztott helyekről konfigurálja a webes teszteket, amelyek tesztelik a válaszidőt és a webes URL-címek üzemidejét. 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 nagyobb vagy egyenlő 400-nál, 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 tekintse meg az alkalmazások monitorozása Azure-alkalmazás Szolgáltatásban című témakört.
Emellett tekintse meg az Azure-webhelyek naprakészen tartását és a végpontfigyelést – Stefan Schackowval a végpontfigyelésről szóló videóért.
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 figyelheti.
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ényfigyelé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 segítségével kódot írhat 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
Az App Service diagnosztikai funkciókat biztosít mind a webkiszolgálóról, mind a webalkalmazásból származó adatok naplózásához. Az információk webkiszolgálói diagnosztikára és alkalmazásdiagnosztikai adatokra oszlanak.
Webkiszolgáló-diagnosztika engedélyezése
A következő típusú naplókat engedélyezheti vagy tilthatja le:
- Részletes hibanaplózás – Részletes hibainformációk a sikertelenséget jelző HTTP-állapotkódokhoz (állapotkód: 400 vagy újabb). Ez olyan információkat tartalmazhat, amelyek segíthetnek meghatározni, hogy a kiszolgáló miért adott vissza hibakódot.
- Sikertelen kérelemkövetés – A sikertelen kérelmek részletes információi, beleértve a kérelem feldolgozásához használt IIS-összetevők és az egyes összetevőkben töltött idő nyomkövetését. Ez akkor lehet hasznos, ha javítani szeretné az alkalmazás teljesítményét, vagy elkülöníti az adott HTTP-hibát okozó problémát.
- Webkiszolgáló naplózása – Információk a W3C kiterjesztett naplófájlformátumot használó HTTP-tranzakciókról. 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 app Service-ből való gyűjtésére, 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 attól függően választhatja ki, hogy mennyi hozzáféréssel rendelkezik az alkalmazáshoz, és hogy mit figyelt meg a monitorozási eszközökből.
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. Az öt nappal ezelőtt rögzített nyomkövetésekhez akkor férhet hozzá, ha ki kell vizsgálnia a múltban történt problémákat. Ezt a lehetőséget mindaddig választhatja, amíg hozzáfér az alkalmazás Application Insights-erőforrásához az Azure Portalon.
Az Application Insights Profiler minden webes hívás válaszidejének statisztikáit és nyomkövetéseit tartalmazza, amelyek jelzik, hogy melyik kódsor okozta a lassú válaszokat. Előfordulhat, hogy az App Service-alkalmazás lassú, mert bizonyos kódokat a rendszer nem teljesítmános módon ír. Ilyenek például a párhuzamosan futtatható szekvenciális kód, valamint 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 az alkalmazást lassító kódsorokat, és leküzdeni ezt a kihívást az App Service-alkalmazások esetében.
További információ: Élő alkalmazások profilozása Azure-alkalmazás Service with Application Insights szolgáltatásban.
Távoli profilkészítés használata
A Azure-alkalmazás Szolgáltatásban a webalkalmazások, AZ API-alkalmazások, a mobil háttérrendszerek és a WebJobs távolról profilosak. Ezt a lehetőséget akkor válassza, ha rendelkezik hozzáféréssel az alkalmazáserőforráshoz, és tudja, hogyan reprodukálhatja a problémát, vagy ha tudja, hogy pontosan milyen időközönként fordul elő a teljesítményproblémá.
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 magasabb a normálnál, távolról profilozza a folyamatot, és lekérheti a cpu-mintavételezési hívásvermeket a folyamattevékenység és a gyakori kódot tartalmazó útvonalak elemzéséhez.
További információ: Távoli profilkészítés támogatása Azure-alkalmazás szolgáltatásban.
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 az 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 kell üzembe 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ára vonatkozó részletes útmutatásért lásd: Diagnosztikai naplózás engedélyezése az alkalmazásokhoz Azure-alkalmazás Szolgáltatásban.
A diagnosztikai eszköz használata
Az App Service intelligens és interaktív felületet biztosít az alkalmazás konfiguráció nélküli hibaelhárításához. Ha problémákba ütközik az alkalmazással kapcsolatban, 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.
Az App Service-diagnosztika eléréséhez lépjen az App Service-alkalmazáshoz vagy az App Service-környezethez az Azure Portalon. A bal oldali navigációs sávon kattintson a Diagnosztizálás gombra, és oldja meg a problémákat.
A Kudu hibakeresési konzol használata
Az App Service tartalmaz egy hibakeresési konzolt, amellyel hibakeresésre, fájlok felderítésére, feltöltésére, valamint JSON-végpontokra is használható 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 az 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éllyel kivételeket okoz, 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öket, amelyekről tudnia kell.
3. A probléma elhárítása
Skálázza az alkalmazást
A Azure-alkalmazás Szolgáltatásban a nagyobb teljesítmény és átviteli sebesség érdekében módosíthatja az alkalmazást futtató skálát. Az alkalmazások vertikális felskálázása két kapcsolódó művelettel jár: az App Service-csomag magasabb tarifacsomagra való módosítása és bizonyos beállítások konfigurálása a magasabb tarifacsomagra váltás után.
A skálázással kapcsolatos további információkért lásd: Alkalmazás méretezése Azure-alkalmazás Szolgáltatásban.
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 némi 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.
Használja az AutoHeal parancsot
Az automatikus kezelés a választott beállítások (például konfigurációváltozások, kérések, memóriaalapú korlátok vagy a kérés végrehajtásához szükséges idő) alapján újrahasznosítja az alkalmazás feldolgozói 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 az Azure Portalon belül, az AutoHeal automatikusan elvégzi Önnek. Mindössze néhány eseményindítót kell hozzáadnia az alkalmazás root web.config fájljához. 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 gyógyítása.
Indítsa újra az alkalmazást
Az újraindítás gyakran a legegyszerűbb módja az egyszeri problémák utáni helyreállításnak. Az Azure Portalon, az alkalmazás panelén lehetősége van az alkalmazás leállítására vagy újraindítására.
Az alkalmazást az Azure PowerShell használatával is kezelheti. További információ: Az Azure PowerShell használata az Azure Resource Manager eszközzel.