Sdílet prostřednictvím


Řešení běžných problémů s Azure Spring Apps

Note

Plány Basic, Standarda Enterprise vstoupily do důchodového období 17. března 2025. Pro více informací si přečtěte oznámení o ukončení Azure Spring Apps.

Tento článek se vztahuje na:✅ Basic/Standard ✅ Enterprise

Tento článek obsahuje pokyny pro řešení potíží s vývojem ve službě Azure Spring Apps. Další informace najdete v nejčastějších dotazech k Azure Spring Apps.

Problémy s dostupností, výkonem a aplikacemi

Moje aplikace nejde spustit

Když se vaše aplikace nemůže spustit, můžete zjistit, že jeho koncový bod nejde připojit nebo že po několika opakováních vrátí hodnotu 502.

Při řešení potíží exportujte protokoly do Azure Log Analytics. Tabulka pro protokoly aplikace Spring má název AppPlatformLogsforSpring. Další informace najdete v tématu Analýza protokolů a metrik pomocí nastavení diagnostiky.

V protokolech se může zobrazit následující chybová zpráva: org.springframework.context.ApplicationContextException: Unable to start web server

Zpráva označuje jeden ze dvou pravděpodobných problémů:

  • Chybí jedna z fazolí nebo jedné z jejích závislostí.
  • Jedna z vlastností bean chybí nebo je neplatná. V tomto případě se zobrazí java.lang.IllegalArgumentException.

Vazby služeb můžou také způsobit selhání spuštění aplikace. K dotazování protokolů použijte klíčová slova, která souvisejí s vázanými službami. Předpokládejme například, že vaše aplikace má vazbu na instanci MySQL, která je nastavená na místní systémový čas. Pokud se aplikaci nepodaří spustit, může se v protokolu zobrazit následující chybová zpráva:

"java.sql.SQLException: Hodnota časového pásma serveru "Coordinated Universal Time" není rozpoznána nebo představuje více než jedno časové pásmo."

Pokud chcete tuto chybu opravit, přejděte na parametry serveru vaší instance MySQL a změňte hodnotu time_zone ze system na +0:00.

Aplikace se chybově ukončí nebo vyvolá neočekávanou chybu

Když ladíte chyby aplikace, začněte tím, že zkontrolujete stav spuštění a stav zjišťování aplikace. Uděláte to tak, že na webu Azure Portal přejdete na Aplikace, abyste měli jistotu, že jsou všechny aplikace spuštěné a v provozu.

  • Pokud je stav Spuštěný, ale stav zjišťování není Aktivní, přejděte do části Moje aplikace nejde zaregistrovat.

  • Pokud je stav zjišťování UP, přejděte na Metriky a zkontrolujte stav aplikace. Zkontrolujte následující metriky:

    • tomcat.global.error:

      Tady se započítávají všechny výjimky aplikace Spring. Pokud je toto číslo velké, přejděte do Azure Log Analytics a zkontrolujte protokoly vaší aplikace.

    • jvm.memory.max:

      Maximální množství paměti dostupné pro aplikaci. Částka může být nedefinovaná nebo se může v průběhu času změnit, pokud je definovaná. Pokud je definovaná, velikost využité a potvrzené paměti je vždy menší nebo rovna maximálnímu počtu. Přidělení paměti však může selhat se zprávou OutOfMemoryError, pokud se přidělení pokusí zvýšit využitou paměť tak, aby využití > potvrzené, i když využití < = maximum je stále pravdivé. V takové situaci zkuste zvýšit maximální velikost haldy pomocí parametru -Xmx .

    • jvm.memory.used:

      Velikost paměti v bajtech, které aplikace aktuálně používá. U běžné zátěžové aplikace v Javě tato řada metrik tvoří pilový vzor, kdy využití paměti neustále jemně roste a klesá a poté náhle výrazně poklesne, a vzor se pak opakuje. K této řadě metrik dochází kvůli garbage collection uvnitř Java virtuálního počítače, kde akce shromažďování představují poklesy v pilovitém vzoru.

      Tato metrika je důležitá k identifikaci problémů s pamětí, například:

      • Výbuch paměti na samém začátku.
      • Přidělení paměti pro konkrétní cestu logiky.
      • Postupné úniky paměti.

    Další informace najdete v tématu Metriky.

    Note

    Tyto metriky jsou k dispozici pouze pro aplikace Spring Boot. Pokud chcete tyto metriky povolit, přidejte závislost spring-boot-starter-actuator . Další informace najdete v části Přidání závislostí poháněcího zařízenív části Správa a monitorování aplikace pomocí ovladače Spring Boot.

  • Pokud se aplikaci nepodaří spustit, ověřte, že aplikace má platné parametry jvm. Pokud je paměť jvm příliš vysoká, může se v protokolech zobrazit následující chybová zpráva:

    "Požadovaná paměť 2728741K je větší než 2000M k dispozici pro přidělení"

Další informace o Azure Log Analytics najdete v tématu Začínáme s Log Analytics ve službě Azure Monitor.

Moje aplikace má vysoké využití procesoru nebo vysoké využití paměti

Pokud u vaší aplikace dochází k vysokému využití procesoru nebo paměti, platí jedna ze dvou věcí:

  • Všechny instance aplikací mají vysoké využití procesoru nebo paměti.
  • U některých instancí aplikace dochází k vysokému využití procesoru nebo paměti.

Pokud chcete zjistit, která situace se týká, postupujte následovně:

  1. Přejděte na Metriky a pak vyberte Procento využití procesoru služby nebo Využitá paměť služby.
  2. Přidejte filtr App= a určete, kterou aplikaci chcete monitorovat.
  3. Rozdělte metriky podle instance.

Pokud všechny instance zažívají vysoké využití procesoru nebo paměti, je třeba buď aplikaci skalovat horizontálně přidáním dalších instancí, nebo zvýšit kapacitu procesoru nebo paměti u stávajících instancí. Další informace najdete v tématu Kurz: Škálování aplikace v Azure Spring Apps.

Pokud u některých instancí dochází k vysokému využití procesoru nebo paměti, zkontrolujte stav instance a stav zjišťování.

Další informace najdete v tématu Metriky pro Azure Spring Apps.

Pokud jsou všechny instance spuštěné, přejděte do Azure Log Analytics k dotazování na protokoly vaší aplikace a přezkoumat logiku vašeho kódu. Tato kontrola vám pomůže zjistit, jestli kterákoli z nich může mít vliv na rozdělení měřítka. Další informace najdete v tématu Analýza protokolů a metrik s nastavením diagnostiky.

Další informace o Azure Log Analytics najdete v tématu Začínáme s Log Analytics ve službě Azure Monitor. Dotazujte se na protokoly pomocí dotazovacího jazyka Kusto.

Kontrolní seznam pro nasazení aplikace Spring do Azure Spring Apps

Než aplikaci nasadíte, ujistěte se, že splňuje následující kritéria:

  • Aplikace může běžet místně se zadanou verzí modulu runtime Java.
  • Konfigurace prostředí (CPU/RAM/Instances) splňuje minimální požadavek nastavený poskytovatelem aplikace.
  • Položky konfigurace mají očekávané hodnoty. Další informace najdete v tématu Nastavení instance Spring Cloud Config Serveru pro vaši službu. Plán Enterprise najdete v tématu Použití služby Konfigurace aplikace.
  • Proměnné prostředí mají očekávané hodnoty.
  • Parametry JVM mají očekávané hodnoty.
  • Doporučujeme zakázat nebo odebrat vložené služby Config Server a Spring Service Registry z balíčku aplikace.
  • Pokud se některé prostředky Azure mají svázat prostřednictvím Service Binding, ujistěte se, že jsou cílové prostředky v provozu.

Konfigurace a správa

Narazil(a) jsem na problém s vytvořením instance služby Azure Spring Apps

Když nastavíte instanci služby Azure Spring Apps pomocí webu Azure Portal, Azure Spring Apps provede ověření za vás.

Pokud se ale pokusíte nastavit instanci služby Azure Spring Apps pomocí Azure CLI nebo šablony Azure Resource Manageru, ověřte, že splňujete následující podmínky:

  • Předplatné je aktivní.
  • Služba Azure Spring Apps je dostupná v oblasti, kterou používáte. Další informace najdete v nejčastějších dotazech k Azure Spring Apps.
  • Skupina prostředků pro instanci je již vytvořena.
  • Název prostředku odpovídá pravidlu pojmenování. Název musí obsahovat jenom malá písmena, číslice a pomlčky. První znak musí být písmeno. Poslední znak musí být písmeno nebo číslo. Hodnota musí obsahovat od 2 do 32 znaků.

Pokud chcete nastavit instanci služby Azure Spring Apps pomocí šablony Resource Manageru, nejprve si přečtěte informace o struktuře a syntaxi šablon Azure Resource Manageru.

Název instance služby Azure Spring Apps se používá k vyžádání názvu subdomény v rámci azuremicroservices.io, takže nastavení selže, pokud je název v konfliktu s existující instancí. Další podrobnosti najdete v protokolech aktivit.

Nemůžu nasadit aplikaci .NET Core

Soubor .zip pro aplikaci .NET Core Steeltoe nemůžete nahrát pomocí webu Azure Portal nebo šablony Resource Manageru.

Když balíček aplikace nasadíte pomocí Azure CLI, Azure CLI se pravidelně dotazuje na průběh nasazení a nakonec zobrazí výsledek nasazení.

Ujistěte se, že je vaše aplikace zabalená ve správném formátu .zip souboru. Pokud není správně zabalený, proces přestane reagovat nebo se zobrazí chybová zpráva.

Nejde mi nasadit balíček JAR

Soubor Java Archive (JAR) nebo zdrojový balíček nemůžete nahrát pomocí webu Azure Portal nebo šablony Resource Manageru.

Když balíček aplikace nasadíte pomocí Azure CLI, Azure CLI se pravidelně dotazuje na průběh nasazení a nakonec zobrazí výsledek nasazení.

Pokud se dotazování přeruší, můžete k načtení protokolů nasazení použít následující příkaz:

az spring app show-deploy-log --name <app-name>

Ujistěte se, že je vaše aplikace zabalená ve správném spustitelném formátu JAR. Pokud není správně zabalený, zobrazí se chybová zpráva podobná následujícímu příkladu: Error: Invalid or corrupt jarfile /jar/11111111-1111-1111-1111-111111111111.

Nejde mi nasadit zdrojový balíček

Soubor JAR nebo zdrojový balíček nejde nahrát pomocí webu Azure Portal nebo šablony Resource Manageru.

Když balíček aplikace nasadíte pomocí Azure CLI, Azure CLI se pravidelně dotazuje na průběh nasazení a nakonec zobrazí výsledek nasazení.

Pokud se dotazování přeruší, můžete k načtení protokolů sestavení a nasazení použít následující příkaz:

az spring app show-deploy-log --name <app-name>

Jedna instance služby Azure Spring Apps ale může aktivovat pouze jednu úlohu sestavení pro jeden zdrojový balíček najednou. Další informace najdete v tématu Nasazení aplikace a nastavení přípravného prostředí v Azure Spring Apps.

Moje aplikace se nedá zaregistrovat

Ve většině případů k této situaci dochází v případě, že v souboru POM (Project Object Model) nejsou správně nakonfigurované požadované závislosti a zjišťování služeb . Po nakonfigurování se integrovaný koncový bod serveru Service Registry vloží do vaší aplikace jako proměnná prostředí. Aplikace se pak zaregistrují na serveru Service Registry a zjistí další závislé aplikace.

Počkejte aspoň dvě minuty, než nově zaregistrovaná instance začne přijímat provoz.

Pokud migrujete existující řešení založené na Spring Cloudu do Azure, nezapomeňte odebrat nebo zakázat instance registru ad hoc služeb a konfiguračního serveru , abyste se vyhnuli konfliktu se spravovanými instancemi poskytovanými službou Azure Spring Apps.

Můžete také zkontrolovat protokoly klienta registru služeb v Azure Log Analytics. Další informace najdete v tématu Analýza protokolů a metrik pomocí nastavení diagnostiky.

Další informace o Azure Log Analytics najdete v tématu Začínáme s Log Analytics ve službě Azure Monitor. Dotazujte se na protokoly pomocí dotazovacího jazyka Kusto.

Chci zkontrolovat proměnné prostředí aplikace

Proměnné prostředí informují architekturu Azure Spring Apps a zajišťují, že Azure rozumí tomu, kde a jak nakonfigurovat služby, které tvoří vaši aplikaci. Zajištění správnosti proměnných prostředí je nezbytným prvním krokem při řešení potenciálních problémů. Ke kontrole proměnných prostředí můžete použít koncový bod ovladače Spring Boot.

Warning

Tento postup zveřejňuje proměnné prostředí pomocí testovacího koncového bodu. Nepokračujte, pokud je testovací koncový bod veřejně přístupný nebo pokud jste aplikaci přiřadili název domény.

  1. Přejděte na https://<your-application-test-endpoint>/actuator/health .

    Odpověď podobná {"status":"UP"} značí, že koncový bod je povolený. Pokud je odpověď záporná, zahrňte do souboru POM.xml následující závislost:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  2. S povoleným koncovým bodem poháněcího zařízení Spring Boot přejděte na web Azure Portal a vyhledejte stránku konfigurace vaší aplikace. Přidejte proměnnou prostředí s názvem MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE a hodnotou *.

  3. Restartujte aplikaci.

  4. Přejděte na https://<your-application-test-endpoint>/actuator/env a zkontrolujte odpověď. Měl by vypadat takto:

    {
        "activeProfiles": [],
        "propertySources": {,
            "name": "server.ports",
            "properties": {
                "local.server.port": {
                    "value": 1025
                }
            }
        }
    }
    

Vyhledejte podřízený uzel s názvem systemEnvironment. Tento uzel obsahuje proměnné prostředí vaší aplikace.

Important

Než zpřístupníte aplikaci veřejnosti, nezapomeňte vrátit zpět expozici proměnných prostředí. Přejděte na web Azure Portal, vyhledejte stránku konfigurace vaší aplikace a odstraňte tuto proměnnou prostředí: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE.

Nemůžu najít metriky nebo protokoly pro aplikaci

Přejděte na Aplikace a ujistěte se, že je stav aplikace spuštěné a dostupné.

Zkontrolujte, jestli JMX je v balíčku aplikace povolený. Tuto funkci lze povolit pomocí konfigurační vlastnosti spring.jmx.enabled=true.

Zkontrolujte, jestli je závislost spring-boot-actuator povolená v balíčku aplikace a zda se aplikace úspěšně spustí.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Pokud se protokoly vaší aplikace dají archivovat do účtu úložiště, ale neodesílají se do Azure Log Analytics, zkontrolujte, jestli jste pracovní prostor nastavili správně. Další informace najdete v tématu Vytvoření pracovního prostoru služby Log Analytics. Mějte také na paměti, že plán Basic neposkytuje smlouvu o úrovni služeb (SLA). Další informace najdete v tématu Smlouvy o úrovni služeb (SLA) pro online služby.

Další kroky