Megosztás a következőn keresztül:


Eszközök a memóriaproblémák elhárításához

Feljegyzés

Az Alapszintű, a Standard és a Nagyvállalati csomag 2025. március közepétől megszűnik, 3 éves nyugdíjazási időszakkal. Javasoljuk, hogy váltson az Azure Container Appsre. További információkért lásd az Azure Spring Apps kivonási bejelentését.

A standard felhasználás és a dedikált csomag 2024. szeptember 30-tól megszűnik, hat hónap után pedig teljes leállítással. Javasoljuk, hogy váltson az Azure Container Appsre. További információ: Azure Spring Apps Standard-használat migrálása és dedikált csomag az Azure Container Appsbe.

Ez a cikk a következőre vonatkozik: ✔️ Basic/Standard ✔️ Enterprise

Ez a cikk a Java memóriaproblémáinak elhárításához hasznos eszközöket ismerteti. Ezeket az eszközöket számos olyan forgatókönyvben használhatja, amelyek nem csak memóriaproblémákra korlátozódnak, de ez a cikk csak a memória témájával foglalkozik.

Riasztások és diagnosztika

A következő szakaszok az Azure Portalon elérhető erőforrás-állapotriasztásokat és diagnosztikát ismertetik.

Erőforrás állapota

Az alkalmazás életciklus-eseményeit monitorozhatja, és riasztásokat állíthat be az Azure Tevékenységnaplóval és az Azure Service Health szolgáltatással. További információkért tekintse meg az alkalmazás életciklus-eseményeinek monitorozását az Azure Tevékenységnapló és az Azure Service Health használatával.

Az erőforrás-állapot riasztásokat küld az alkalmazás újraindítási eseményeiről a tároló memóriahiánya (OOM) miatt. További információ: Az alkalmazás újraindításával kapcsolatos problémák, amelyeket memóriakihasználtság miatti problémák okoznak.

Az alábbi képernyőképen egy alkalmazás erőforrás-állapotára vonatkozó riasztás látható, amely OOM-problémát jelez.

Képernyőkép az Azure Portalról, amelyen az Azure Spring Apps Resource Health oldala látható, kiemelt OOM-üzenettel.

Problémák diagnosztizálása és megoldása

Az Azure Spring Apps diagnosztikája interaktív felület az alkalmazás konfiguráció nélküli hibaelhárításához. További információ: Az Azure Spring Apps problémáinak öndiagnosztikálása és megoldása.

Az Azure Portalon a Memóriahasználat a Problémák diagnosztizálása és megoldása területen található, ahogyan az alábbi képernyőképen látható.

Képernyőkép az Azure Portalról, amelyen az Azure Spring Apps Diagnosztizálás és problémamegoldás lapja látható, amelyen a memóriahasználat a legördülő menüben van kiemelve.

A memóriahasználat egyszerű diagnózist biztosít az alkalmazások memóriahasználatához, ahogyan az az alábbi képernyőképen is látható.

Képernyőkép az Azure Portalról, amelyen az Azure Spring Apps Memóriahasználat lapja látható.

Mérőszámok

A következő szakaszok olyan metrikákat mutatnak be, amelyek olyan problémákat fednek le, mint a magas memóriahasználat, a túl nagy halommemória és a rendellenes szemétgyűjtés (túl gyakori vagy nem elég gyakori). További információ : Rövid útmutató: Azure Spring Apps-alkalmazások figyelése naplókkal, metrikákkal és nyomkövetéssel.

Alkalmazásmemória-használat

Az alkalmazás memóriahasználata az alkalmazás memóriakorlátjának hányadosa. Ez az érték az alkalmazás teljes memóriáját jeleníti meg.

jvm.memory.used/committed/max

A JVM-memória esetében három metrika létezik: jvm.memory.used, jvm.memory.committedés jvm.memory.max, amelyek az alábbi listában találhatók.

A "JVM-memória" nem egy egyértelműen definiált fogalom. jvm.memory Itt található a halommemória és a nem halommemória egykori permGen része. A JVM-memória nem tartalmaz közvetlen memóriát vagy más memóriát, például a szálvermet. A Spring Boot Actuator összegyűjti ezt a három metrikát, és meghatározza a hatókörét jvm.memory.

  • jvm.memory.used A használt JVM-memória mennyisége, beleértve a használt halommemóriát és a korábbi permGent a nem halommemória esetében.

    jvm.memory.used a halommemória változásának jelentős tükröződése, mivel az egykori permGen rész általában stabil.

    Ha túl nagynak találja jvm.memory.used , érdemes lehet kisebb halommemóriaméretet beállítani.

  • jvm.memory.committed A JVM számára lekötött memória mennyisége. A mérete jvm.memory.committed alapvetően a használható JVM-memória korlátja.

  • jvm.memory.max A JVM-memória maximális mennyisége, nem tévesztendő össze a valós rendelkezésre álló mennyiséggel.

    Az érték jvm.memory.max néha zavaró lehet, mert sokkal magasabb lehet, mint a rendelkezésre álló alkalmazásmemória. A tisztázás jvm.memory.max érdekében a halommemória összes maximális mérete és a nem halommemória egykori permGen része összege, függetlenül a valós rendelkezésre álló memóriától. Ha például egy alkalmazás 1 GB memóriával van beállítva az Azure Spring Apps portálon, akkor az alapértelmezett halommemória mérete 0,5 GB. További információkért tekintse meg a Java-memóriakezelés alapértelmezett maximális halomméretének szakaszát.

    Ha az alapértelmezett tömörített osztálytér mérete 1 GB, akkor az érték jvm.memory.max nagyobb, mint 1,5 GB, függetlenül attól, hogy az alkalmazás memóriamérete 1 GB- e. További információ: Java Platform, Standard kiadás HotSpot virtuális gép szemétgyűjtési hangolási útmutatója: Egyéb szempontok az Oracle dokumentációjában.

jvm.gc.memory.allocated/promoted

Ez a két metrika a Java-szemétgyűjtés (GC) megfigyelésére használható. További információt a Java memóriakezelés Java-szemétgyűjtési szakaszában talál. A halom maximális mérete befolyásolja a kisebb GC és a teljes GC gyakoriságát. A maximális metatér és a maximális közvetlen memóriaméret befolyásolja a teljes GC-t. Ha módosítani szeretné a szemétgyűjtés gyakoriságát, fontolja meg a következő maximális memóriaméret módosítását.

  • jvm.gc.memory.allocated a fiatal generációs memóriakészlet méretének növekedése az egyik GC után és a következő előtt. Ez az érték kisebb GC-t tükröz.

  • jvm.gc.memory.promoted A GC után a régi generációs memóriakészlet méretének növekedése. Ez az érték teljes GC-t tükröz.

Ezt a funkciót az Azure Portalon találja, ahogyan az alábbi képernyőképen is látható. Kiválaszthat bizonyos metrikákat, és szűrőket adhat hozzá egy adott alkalmazáshoz, üzembe helyezéshez vagy példányhoz. Felosztást is alkalmazhat.

Képernyőkép az Azure Portalról az Azure Spring Apps metrikáinak oldalával.

További hibakeresés

További hibakereséshez manuálisan rögzítheti a halomképeket és a szálak memóriaképeit, és használhatja a Java Flight Recordert (JFR). További információ: Halommemóta és szálkép manuális rögzítése és a Java Flight Recorder használata az Azure Spring Appsben.

A halomképek rögzítik a Java-halommemória állapotát. A szálképek rögzítik az összes élő szál halmait. Ezek az eszközök az Azure CLI-n és az Azure Portal alkalmazásoldalán érhetők el, ahogyan az alábbi képernyőképen látható.

Képernyőkép az Azure Portal alkalmazásáttekintő oldaláról, kiemelt Hibaelhárítás gombbal.

További információ: Halommemóta és szálkép manuális rögzítése és a Java Flight Recorder használata az Azure Spring Appsben. A memóriaelemzőhöz hasonló külső eszközökkel is elemezheti a halomképeket.

Konfigurációk módosítása a problémák megoldásához

Bizonyos problémákat azonosíthat, például a tároló OOM-ját, a túl nagy halommemória és a rendellenes szemétgyűjtést. Ha ezek közül a problémák közül bármelyiket azonosítja, előfordulhat, hogy a maximális memóriaméretet kell konfigurálnia a JVM-beállításokban. További információkért tekintse meg a Java memóriakezelés fontos JVM-beállítások szakaszát.

A JVM-beállításokat az Azure Portal vagy az Azure CLI használatával módosíthatja.

Az Azure Portalon navigáljon az alkalmazáshoz, majd a navigációs menü Beállítások szakaszában válassza a Konfiguráció lehetőséget. Az Általános beállítások lapon frissítse a JVM-beállítások mezőt az alábbi képernyőképen látható módon:

Képernyőkép az Azure Portal alkalmazáskonfigurációs oldaláról, kiemelt JVM-beállításokkal.

Lásd még