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:

  1. Alkalmazás viselkedésének megfigyelése és monitorozása
  2. Adatgyűjtés
  3. A probléma elhárítása

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

alkalmazás teljesítményének monitorozása

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ás újraindítása a teljesítményproblémák megoldásához

Az alkalmazást Azure PowerShell is kezelheti. További információ: Az Azure PowerShell használata az Azure Resource Manager eszközzel.

További erőforrások

Oktatóanyag: Terhelési teszt futtatása a teljesítmény szűk keresztmetszeteinek azonosításához egy webalkalmazásban