Řešení běžných problémů s Azure Spring Apps
Poznámka:
Plány Basic, Standard a Enterprise budou od poloviny března 2025 vyřazeny ze 3letého období vyřazení. Doporučujeme přejít na Azure Container Apps. Další informace najdete v oznámení o vyřazení Azure Spring Apps.
Od 30. září 2024 bude od 30. září 2024 zastaralý plán s úplným vypnutím po šesti měsících. Doporučujeme přejít na Azure Container Apps. Další informace najdete v tématu Migrace spotřeby Azure Spring Apps Úrovně Standard a vyhrazeného plánu do Azure Container 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í objektu 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 do server parameters
vaší instance MySQL a změňte time_zone
hodnotu 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 up.
Pokud je stav Spuštěný , ale stav zjišťování není v provozu, 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 byla potvrzena>, i když je použitá <hodnota = maximum 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 normální aplikace v Javě zatížení tvoří tato řada metrik pilový vzor, kdy se využití paměti neustále zvyšuje a snižuje v malých přírůstcích a najednou klesá hodně a pak se vzor opakuje. K této řadě metrik dochází kvůli uvolňování paměti uvnitř virtuálního počítače v Javě, kde akce shromažďování představují poklesy v modelu sawtooth.
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é nevracení paměti.
Další informace najdete v tématu Metriky.
Poznámka:
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.
V aplikaci dochází k vysokému využití procesoru nebo 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ě:
- Přejděte na Metriky a pak vyberte Procento využití procesoru služby nebo Využitá paměť služby.
- Přidejte filtr App= a určete, kterou aplikaci chcete monitorovat.
- Rozdělte metriky podle instance.
Pokud u všech instancí dochází k vysokému využití procesoru nebo paměti, musíte vertikálně navýšit kapacitu aplikace nebo vertikálně navýšit kapacitu využití procesoru nebo paměti. 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é a spuštěné, přejděte do Služby Azure Log Analytics, kde se můžete dotazovat na protokoly aplikace a zkontrolovat logiku kódu. Tato kontrola vám pomůže zjistit, jestli některá z nich může mít vliv na dělení na škálování. 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ějaké prostředky Azure mají vázat přes vazbu služby, 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ím znakem musí být písmeno. Posledním znakem 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 dojde k přerušení dotazování, stále můžete načíst protokoly nasazení pomocí následujícího příkazu:
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 dojde k přerušení dotazování, stále můžete načíst protokoly sestavení a nasazení pomocí následujícího příkazu:
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.
Upozorňující
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.
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>
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*
.Restartujte aplikaci.
Přejděte na
https://<your-application-test-endpoint>/actuator/env
odpověď a zkontrolujte ji. 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.
Důležité
Než aplikaci zpřístupníte veřejnosti, nezapomeňte obrátit 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 jsou stavy aplikace spuštěné a up.
Zkontrolujte, jestli je v balíčku aplikace povolený JMX . Tuto funkci lze povolit pomocí vlastnosti spring.jmx.enabled=true
konfigurace .
Zkontrolujte, jestli spring-boot-actuator
je v balíčku aplikace povolená závislost a jestli se ú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.
Plán Enterprise
Chyba 112039: Nepodařilo se koupit na Azure Marketplace
Vytvoření instance plánu Azure Spring Apps Enterprise selže s kódem chyby "112039". Další informace najdete v podrobné chybové zprávě v následujícím seznamu:
Nepodařilo se zakoupit na Azure Marketplace, protože poskytovatel prostředků Microsoft.SaaS není zaregistrovaný v předplatném Azure.: Plán Azure Spring Apps Enterprise zakoupí nabídku SaaS od VMware.
Před vytvořením instance Azure Spring Apps Enterprise musíte poskytovatele prostředků zaregistrovat
Microsoft.SaaS
. Podívejte se, jak zaregistrovat poskytovatele prostředků.Nepodařilo se načíst produkt katalogu vmware-inc.azure-spring-cloud-vmware-tanzu-2 na trhu předplatného Azure.: Adresa fakturačního účtu předplatného Azure není v podporovaném umístění.
Další informace naleznete v části Žádné plány nejsou k dispozici pro trh "<Umístění>".
Nepodařilo se zakoupit na Azure Marketplace kvůli ověření podpisu v právní smlouvě z Marketplace. Zkontrolujte, jestli předplatné Azure souhlasí s podmínkami vmware-inc.azure-spring-cloud-vmware-tanzu-2.asa-ent-hr-mtr.: Vaše předplatné Azure nepodepslo podmínky nabídky a plánu, které se mají koupit.
Přejděte do svého předplatného Azure a spuštěním následujícího příkazu Azure CLI přijměte podmínky:
az term accept \ --publisher vmware-inc \ --product azure-spring-cloud-vmware-tanzu-2 \ --plan asa-ent-hr-mtr
Pokud to nepomůže, můžete kontaktovat tým podpory s následujícími informacemi.
AZURE_TENANT_ID
: ID tenanta Azure, které je hostitelem předplatného AzureAZURE_SUBSCRIPTION_ID
: ID předplatného Azure použité k vytvoření instance Azure Spring AppsSPRING_CLOUD_NAME
: název neúspěšné instanceERROR_MESSAGE
: pozorovaná chybová zpráva
Pro trh Location<> nejsou k dispozici žádné plány.
Když navštívíte nabídku SaaS, která nabízí Azure Spring Apps Enterprise na Azure Marketplace, může se stát, že na následujícím obrázku nejsou k dispozici žádné plány pro umístění> na trhu<.
Plán Azure Spring Apps Enterprise vyžaduje, aby zákazníci zaplatili za licenci komponent Tanzu prostřednictvím nabídky Azure Marketplace. Pokud si chcete koupit v Azure Marketplace, měla by být země nebo oblast fakturačního účtu pro vaše předplatné Azure v podporovaných geografických umístěních nabídky SaaS.
Azure Spring Apps Enterprise teď podporuje všechna geografická umístění, která Azure Marketplace podporuje. Viz část Podporovaná geografická umístění s geografickou dostupností a podporou měny pro komerční marketplace.
Pokud máte přístup správce, můžete si prohlédnout fakturační účet svého předplatného. Viz zobrazení fakturačních účtů.
Potřebuji podporu prostředí VMware Spring Runtime (jenom plán Enterprise)
Plán Enterprise má integrovanou podporu prostředí VMware Spring Runtime, takže pokud si myslíte, že se váš problém týká podpory VMware Spring Runtime, můžete otevřít lístky podpory pro VMware . Pokud chcete lépe porozumět podpoře prostředí VMware Spring Runtime, podívejte se na modul VMware Spring Runtime. Další informace o registraci a používání této služby podpory najdete v části Podpora v části Podnikové nejčastější dotazy z VMware. V případě jakýchkoli jiných problémů otevřete lístek podpory u Microsoftu.