Udostępnij za pośrednictwem


Rozwiązywanie typowych problemów z usługą Azure Spring Apps

Uwaga

Plany Podstawowa, Standardowa i Enterprise zostaną wycofane od połowy marca 2025 r. z 3-letnim okresem emerytalnym. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.

Zużycie standardowe i dedykowany plan zostaną wycofane od 30 września 2024 r. z całkowitym zamknięciem po sześciu miesiącach. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Migrowanie użycia usługi Azure Spring Apps w warstwie Standardowa i dedykowanego planu do usługi Azure Container Apps.

Ten artykuł dotyczy: ✔️ Podstawowa/Standardowa ✔️ Enterprise

Ten artykuł zawiera instrukcje dotyczące rozwiązywania problemów z programowaniem usługi Azure Spring Apps. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące usługi Azure Spring Apps.

Problemy z dostępnością, wydajnością i aplikacją

Nie można uruchomić mojej aplikacji

Gdy aplikacja nie może się uruchomić, może się okazać, że jej punkt końcowy nie może być połączony lub zwraca błąd 502 po kilku ponownych próbach.

Aby rozwiązać problemy, wyeksportuj dzienniki do usługi Azure Log Analytics. Tabela dzienników aplikacji Spring nosi nazwę AppPlatformLogsforSpring. Aby dowiedzieć się więcej, zobacz Analizowanie dzienników i metryk przy użyciu ustawień diagnostycznych.

W dziennikach może zostać wyświetlony następujący komunikat o błędzie: org.springframework.context.ApplicationContextException: Unable to start web server

Komunikat wskazuje jeden z dwóch prawdopodobnych problemów:

  • Brakuje jednej z fasoli lub jednego z jego zależności.
  • Brakuje jednej z właściwości ziarna lub jest ona nieprawidłowa. W tym przypadku zostanie wyświetlony komunikat "java.lang.IllegalArgumentException".

Powiązania usług mogą również powodować błędy uruchamiania aplikacji. Aby wykonywać zapytania dotyczące dzienników, użyj słów kluczowych powiązanych z powiązanymi usługami. Załóżmy na przykład, że aplikacja ma powiązanie z wystąpieniem mySQL ustawionym na lokalny czas systemowy. Jeśli uruchomienie aplikacji nie powiedzie się, w dzienniku może pojawić się następujący komunikat o błędzie:

"java.sql.SQLException: wartość strefy czasowej serwera "Uniwersalny czas koordynowany" jest nierozpoznana lub reprezentuje więcej niż jedną strefę czasową.

Aby naprawić ten błąd, przejdź do server parameters wystąpienia programu MySQL i zmień time_zone wartość z SYSTEM na +0:00.

Moja aplikacja ulega awarii lub zgłasza nieoczekiwany błąd

Podczas debugowania aplikacji ulega awarii, zacznij od sprawdzenia stanu uruchomienia i stanu odnajdywania aplikacji. Aby to zrobić, przejdź do pozycji Aplikacje w witrynie Azure Portal, aby upewnić się, że stan wszystkich aplikacji to Uruchomione i Uruchomione.

  • Jeśli stan to Uruchomiono, ale stan odnajdywania nie jest uruchomiony, przejdź do sekcji "Nie można zarejestrować mojej aplikacji".

  • Jeśli stan odnajdywania to UP, przejdź do pozycji Metryki, aby sprawdzić kondycję aplikacji. Sprawdź następujące metryki:

    • tomcat.global.error:

      Wszystkie wyjątki aplikacji Spring są w tym miejscu liczone. Jeśli ta liczba jest duża, przejdź do usługi Azure Log Analytics, aby sprawdzić dzienniki aplikacji.

    • jvm.memory.max:

      Maksymalna ilość pamięci dostępnej dla aplikacji. Kwota może być niezdefiniowana lub może ulec zmianie w miarę upływu czasu, jeśli została zdefiniowana. Jeśli jest zdefiniowana, ilość używanej i zatwierdzonej pamięci jest zawsze mniejsza lub równa maksymalnej. Jednak alokacja pamięci może zakończyć się niepowodzeniem z komunikatem OutOfMemoryError , jeśli alokacja spróbuje zwiększyć użytą pamięć, tak aby użyto > zatwierdzonej, nawet jeśli jest używana <= maksymalna wartość jest nadal prawdziwa. W takiej sytuacji spróbuj zwiększyć maksymalny rozmiar sterty przy użyciu parametru -Xmx .

    • jvm.memory.used:

      Ilość pamięci w bajtach używanych obecnie przez aplikację. W przypadku normalnej aplikacji Java obciążenie tej serii metryk stanowi wzorzec piły , w którym użycie pamięci stale rośnie i zmniejsza się w małych przyrostach i nagle spada dużo, a następnie wzorzec powtarza się. Ta seria metryk występuje z powodu odzyskiwania pamięci wewnątrz maszyny wirtualnej Java, gdzie akcje zbierania reprezentują spadki we wzorcu piły.

      Ta metryka jest ważna, aby ułatwić identyfikowanie problemów z pamięcią, takich jak:

      • Eksplozja pamięci na samym początku.
      • Alokacja pamięci skokowej dla określonej ścieżki logiki.
      • Stopniowe przecieki pamięci.

    Aby uzyskać więcej informacji, zobacz Metryki.

    Uwaga

    Te metryki są dostępne tylko dla aplikacji Spring Boot. Aby włączyć te metryki, dodaj spring-boot-starter-actuator zależność. Aby uzyskać więcej informacji, zobacz sekcję Dodawanie zależności siłownika w temacie Zarządzanie aplikacją i monitorowanie jej za pomocą siłownika Spring Boot.

  • Jeśli uruchomienie aplikacji nie powiedzie się, sprawdź, czy aplikacja ma prawidłowe parametry jvm. Jeśli pamięć jvm jest zbyt wysoka, w dziennikach może pojawić się następujący komunikat o błędzie:

    "wymagana pamięć 2728741K jest większa niż 2000M dostępna do alokacji"

Aby dowiedzieć się więcej na temat usługi Azure Log Analytics, zobacz Rozpoczynanie pracy z usługą Log Analytics w usłudze Azure Monitor.

Moja aplikacja używa dużo mocy procesora lub pamięci

Jeśli w aplikacji występuje wysokie użycie procesora CPU lub pamięci, jedna z dwóch rzeczy ma wartość true:

  • Wszystkie wystąpienia aplikacji mają wysokie użycie procesora CPU lub pamięci.
  • Niektóre wystąpienia aplikacji mają wysokie użycie procesora CPU lub pamięci.

Aby ustalić, która sytuacja ma zastosowanie, wykonaj następujące czynności:

  1. Przejdź do pozycji Metryki, a następnie wybierz pozycję Procent użycia procesora CPU usługi lub Użycie pamięci usługi.
  2. Dodaj filtr App= w celu określenia aplikacji, którą chcesz monitorować.
  3. Podziel metryki według wystąpienia.

Jeśli we wszystkich wystąpieniach występuje wysokie użycie procesora CPU lub pamięci, należy skalować aplikację w poziomie lub skalować w górę użycie procesora CPU lub pamięci. Aby uzyskać więcej informacji, zobacz Samouczek: skalowanie aplikacji w usłudze Azure Spring Apps.

Jeśli w niektórych wystąpieniach występuje wysokie użycie procesora CPU lub pamięci, sprawdź stan wystąpienia i jego stan odnajdywania.

Aby uzyskać więcej informacji, zobacz Metryki dla usługi Azure Spring Apps.

Jeśli wszystkie wystąpienia są uruchomione, przejdź do usługi Azure Log Analytics, aby wykonywać zapytania dotyczące dzienników aplikacji i przeglądać logikę kodu. Ten przegląd ułatwia sprawdzenie, czy którykolwiek z nich może mieć wpływ na partycjonowanie skalowania. Aby uzyskać więcej informacji, zobacz Analizowanie dzienników i metryk przy użyciu ustawień diagnostycznych.

Aby dowiedzieć się więcej na temat usługi Azure Log Analytics, zobacz Rozpoczynanie pracy z usługą Log Analytics w usłudze Azure Monitor. Wykonywanie zapytań dotyczących dzienników przy użyciu języka zapytań Kusto.

Lista kontrolna wdrażania aplikacji Spring w usłudze Azure Spring Apps

Przed dołączenia aplikacji upewnij się, że spełnia ona następujące kryteria:

  • Aplikacja może działać lokalnie z określoną wersją środowiska uruchomieniowego Java.
  • Konfiguracja środowiska (procesor CPU/RAM/wystąpienia) spełnia minimalne wymagania określone przez dostawcę aplikacji.
  • Elementy konfiguracji mają oczekiwane wartości. Aby uzyskać więcej informacji, zobacz Konfigurowanie wystąpienia serwera Spring Cloud Config Server dla usługi. Aby zapoznać się z planem Enterprise, zobacz Use Application Configuration Service (Korzystanie z usługi konfiguracji aplikacji).
  • Zmienne środowiskowe mają oczekiwane wartości.
  • Parametry JVM mają oczekiwane wartości.
  • Zalecamy wyłączenie lub usunięcie osadzonych usług Config Server i Spring Service Registry z pakietu aplikacji.
  • Jeśli jakiekolwiek zasoby platformy Azure mają być powiązane za pomocą powiązania usługi, upewnij się, że zasoby docelowe zostały uruchomione.

Konfigurowanie i zarządzanie

Wystąpił problem z tworzeniem wystąpienia usługi Azure Spring Apps

Podczas konfigurowania wystąpienia usługi Azure Spring Apps przy użyciu witryny Azure Portal usługa Azure Spring Apps przeprowadza walidację.

Jeśli jednak spróbujesz skonfigurować wystąpienie usługi Azure Spring Apps przy użyciu interfejsu wiersza polecenia platformy Azure lub szablonu usługi Azure Resource Manager, sprawdź, czy spełnione są następujące warunki:

  • Subskrypcja jest aktywna.
  • Usługa Azure Spring Apps jest dostępna w regionie, z którego korzystasz. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące usługi Azure Spring Apps.
  • Grupa zasobów dla wystąpienia została już utworzona.
  • Nazwa zasobu jest zgodna z regułą nazewnictwa. Nazwa musi zawierać tylko małe litery, cyfry i łączniki. Pierwszy znak musi być literą. Ostatni znak musi być literą lub cyfrą. Wartość musi zawierać od 2 do 32 znaków.

Jeśli chcesz skonfigurować wystąpienie usługi Azure Spring Apps przy użyciu szablonu usługi Resource Manager, najpierw zapoznaj się ze strukturą i składnią szablonów usługi Azure Resource Manager.

Nazwa wystąpienia usługi Azure Spring Apps jest używana do żądania nazwy poddomeny w obszarze azuremicroservices.io, więc instalacja kończy się niepowodzeniem, jeśli nazwa powoduje konflikt z istniejącą. Więcej szczegółów można znaleźć w dziennikach aktywności.

Nie mogę wdrożyć aplikacji .NET Core

Nie można przekazać pliku .zip dla aplikacji .NET Core Steeltoe przy użyciu witryny Azure Portal lub szablonu usługi Resource Manager.

Podczas wdrażania pakietu aplikacji przy użyciu interfejsu wiersza polecenia platformy Azure interfejs wiersza polecenia platformy Azure okresowo sonduje postęp wdrażania, a na końcu wyświetla wynik wdrożenia.

Upewnij się, że aplikacja jest spakowana w poprawnym formacie pliku .zip . Jeśli nie jest poprawnie spakowany, proces przestaje odpowiadać lub pojawia się komunikat o błędzie.

Nie mogę wdrożyć pakietu JAR

Nie można przekazać pliku Archiwum Java (JAR)/pakietu źródłowego przy użyciu witryny Azure Portal lub szablonu usługi Resource Manager.

Podczas wdrażania pakietu aplikacji przy użyciu interfejsu wiersza polecenia platformy Azure interfejs wiersza polecenia platformy Azure okresowo sonduje postęp wdrażania, a na końcu wyświetla wynik wdrożenia.

Jeśli sondowanie zostanie przerwane, możesz użyć następującego polecenia, aby pobrać dzienniki wdrażania:

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

Upewnij się, że aplikacja jest spakowana w poprawnym formacie pliku WYKonywalnego JAR. Jeśli nie jest poprawnie spakowany, zostanie wyświetlony komunikat o błędzie podobny do następującego przykładu: Error: Invalid or corrupt jarfile /jar/11111111-1111-1111-1111-111111111111.

Nie mogę wdrożyć pakietu źródłowego

Nie można przekazać pakietu JAR/źródłowego przy użyciu witryny Azure Portal lub szablonu usługi Resource Manager.

Podczas wdrażania pakietu aplikacji przy użyciu interfejsu wiersza polecenia platformy Azure interfejs wiersza polecenia platformy Azure okresowo sonduje postęp wdrażania, a na końcu wyświetla wynik wdrożenia.

Jeśli sondowanie zostanie przerwane, możesz użyć następującego polecenia, aby pobrać dzienniki kompilowania i wdrażania:

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

Jednak jedno wystąpienie usługi Azure Spring Apps może wyzwalać tylko jedno zadanie kompilacji dla jednego pakietu źródłowego jednocześnie. Aby uzyskać więcej informacji, zobacz Wdrażanie aplikacji i Konfigurowanie środowiska przejściowego w usłudze Azure Spring Apps.

Nie można zarejestrować mojej aplikacji

W większości przypadków taka sytuacja występuje, gdy wymagane zależności i odnajdywanie usługi nie są prawidłowo skonfigurowane w pliku Modelu obiektów projektu (POM). Po skonfigurowaniu wbudowany punkt końcowy serwera usługi Service Registry jest wstrzykiwany jako zmienna środowiskowa w aplikacji. Następnie aplikacje rejestrują się na serwerze usługi i odnajdują inne aplikacje zależne.

Poczekaj co najmniej dwie minuty, zanim nowo zarejestrowane wystąpienie zacznie odbierać ruch.

Jeśli przeprowadzasz migrację istniejącego rozwiązania opartego na usłudze Spring Cloud na platformę Azure, pamiętaj o usunięciu lub wyłączeniu rejestru usług ad hoc i wystąpień serwera konfiguracji, aby uniknąć konfliktu z wystąpieniami zarządzanymi udostępnianymi przez usługę Azure Spring Apps.

Możesz również sprawdzić dzienniki klienta rejestru usług w usłudze Azure Log Analytics. Aby uzyskać więcej informacji, zobacz Analizowanie dzienników i metryk przy użyciu ustawień diagnostycznych

Aby dowiedzieć się więcej na temat usługi Azure Log Analytics, zobacz Rozpoczynanie pracy z usługą Log Analytics w usłudze Azure Monitor. Wykonywanie zapytań dotyczących dzienników przy użyciu języka zapytań Kusto.

Chcę sprawdzić zmienne środowiskowe aplikacji

Zmienne środowiskowe informują platformę Azure Spring Apps, zapewniając, że platforma Azure rozumie, gdzie i jak skonfigurować usługi tworzące aplikację. Upewnienie się, że zmienne środowiskowe są poprawne, jest pierwszym krokiem w rozwiązywaniu potencjalnych problemów. Aby przejrzeć zmienne środowiskowe, możesz użyć punktu końcowego siłownika Spring Boot.

Ostrzeżenie

Ta procedura uwidacznia zmienne środowiskowe przy użyciu punktu końcowego testu. Nie należy kontynuować, jeśli punkt końcowy testu jest publicznie dostępny lub czy przypisano nazwę domeny do aplikacji.

  1. Przejdź do https://<your-application-test-endpoint>/actuator/health.

    Odpowiedź podobna do {"status":"UP"} wskazuje, że punkt końcowy został włączony. Jeśli odpowiedź jest ujemna, dołącz następującą zależność w pliku POM.xml :

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  2. Po włączeniu punktu końcowego siłownika Spring Boot przejdź do witryny Azure Portal i poszukaj strony konfiguracji aplikacji. Dodaj zmienną środowiskową o nazwie MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE i wartości *.

  3. Uruchom ponownie aplikację.

  4. Przejdź do https://<your-application-test-endpoint>/actuator/env strony i sprawdź odpowiedź. Powinien on wyglądać następująco:

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

Wyszukaj węzeł podrzędny o nazwie systemEnvironment. Ten węzeł zawiera zmienne środowiskowe aplikacji.

Ważne

Pamiętaj, aby odwrócić ekspozycję zmiennych środowiskowych przed udostępnieniem aplikacji publicznej. Przejdź do witryny Azure Portal, wyszukaj stronę konfiguracji aplikacji i usuń tę zmienną środowiskową: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE.

Nie mogę znaleźć metryk ani dzienników dla mojej aplikacji

Przejdź do obszaru Aplikacje , aby upewnić się, że stan aplikacji jest uruchomiony i uruchomiony.

Sprawdź, czy w pakiecie aplikacji jest włączona funkcja JMX . Tę funkcję można włączyć za pomocą właściwości spring.jmx.enabled=truekonfiguracji .

Sprawdź, czy spring-boot-actuator zależność jest włączona w pakiecie aplikacji i czy pomyślnie się uruchamia.

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

Jeśli dzienniki aplikacji można zarchiwizować na koncie magazynu, ale nie są wysyłane do usługi Azure Log Analytics, sprawdź, czy obszar roboczy został poprawnie skonfigurowany. Aby uzyskać więcej informacji, zobacz Tworzenie obszaru roboczego usługi Log Analytics. Należy również pamiętać, że plan podstawowy nie zapewnia umowy dotyczącej poziomu usług (SLA). Aby uzyskać więcej informacji, zobacz Umowy dotyczące poziomu usług (SLA) dla usług online.

Plan przedsiębiorstwa

Błąd 112039: Nie można kupić w witrynie Azure Marketplace

Tworzenie wystąpienia planu Usługi Azure Spring Apps Enterprise kończy się niepowodzeniem z kodem błędu "112039". Aby uzyskać więcej informacji, sprawdź szczegółowy komunikat o błędzie na poniższej liście:

  • "Nie można kupić w witrynie Azure Marketplace, ponieważ dostawca usługi Microsoft.SaaS nie jest zarejestrowany w subskrypcji platformy Azure.": Plan Azure Spring Apps Enterprise zakup oferty SaaS z programu VMware.

    Przed utworzeniem wystąpienia usługi Azure Spring Apps Enterprise należy zarejestrować dostawcę Microsoft.SaaS zasobów. Zobacz, jak zarejestrować dostawcę zasobów.

  • "Nie można załadować katalogu produktu vmware-inc.azure-spring-cloud-vmware-tanzu-2 na rynku subskrypcji platformy Azure.": Adres konta rozliczeniowego subskrypcji platformy Azure nie znajduje się w obsługiwanej lokalizacji.

    Aby uzyskać więcej informacji, zobacz sekcję Brak planów dostępnych dla rynku "<Lokalizacja>".

  • "Nie można kupić w witrynie Azure Marketplace z powodu weryfikacji podpisu w umowie prawnej witryny Marketplace. Sprawdź, czy subskrypcja platformy Azure zgadza się z warunkami vmware-inc.azure-spring-cloud-vmware-tanzu-2.asa-ent-hr-mtr": Subskrypcja platformy Azure nie podpisała warunków oferty i planu zakupu.

    Przejdź do subskrypcji platformy Azure i uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure, aby wyrazić zgodę na warunki:

    az term accept \
        --publisher vmware-inc \
        --product azure-spring-cloud-vmware-tanzu-2 \
        --plan asa-ent-hr-mtr
    

    Jeśli to nie pomoże, możesz skontaktować się z zespołem pomocy technicznej, postępując zgodnie z poniższymi informacjami.

    • AZURE_TENANT_ID: identyfikator dzierżawy platformy Azure hostujący subskrypcję platformy Azure
    • AZURE_SUBSCRIPTION_ID: identyfikator subskrypcji platformy Azure użyty do utworzenia wystąpienia usługi Azure Spring Apps
    • SPRING_CLOUD_NAME: nazwa wystąpienia, które zakończyło się niepowodzeniem
    • ERROR_MESSAGE: zaobserwowany komunikat o błędzie

Brak planów dostępnych dla rynku "<Lokalizacja>"

Po wizycie w ofercie SaaS Azure Spring Apps Enterprise w witrynie Azure Marketplace może być wyświetlany komunikat "Brak planów dostępnych dla rynku "<Lokalizacja>", jak na poniższej ilustracji.

Zrzut ekranu witryny Azure Portal przedstawiający komunikat o błędzie Brak planów dla rynku.

Plan Azure Spring Apps Enterprise wymaga od klientów płacenia za licencję na składniki Tanzu za pośrednictwem oferty witryny Azure Marketplace. Aby kupić w witrynie Azure Marketplace, kraj lub region konta rozliczeniowego dla subskrypcji platformy Azure powinien znajdować się w obsługiwanych lokalizacjach geograficznych oferty SaaS.

Usługa Azure Spring Apps Enterprise obsługuje teraz wszystkie lokalizacje geograficzne obsługiwane przez witrynę Azure Marketplace. Zobacz sekcję Obsługiwane lokalizacje geograficzne w sekcji Dostępność geograficzna i obsługa walut na platformie handlowej.

Jeśli masz dostęp administratora, możesz wyświetlić konto rozliczeniowe dla subskrypcji. Zobacz Wyświetlanie kont rozliczeniowych.

Potrzebuję pomocy technicznej środowiska VMware Spring Runtime (tylko plan enterprise)

Plan Enterprise ma wbudowaną obsługę środowiska VMware Spring Runtime, dzięki czemu możesz otwierać bilety pomocy technicznej dla oprogramowania VMware , jeśli uważasz, że problem znajduje się w zakresie pomocy technicznej środowiska VMware Spring Runtime. Aby lepiej zrozumieć samą obsługę środowiska VMware Spring Runtime, zobacz środowisko uruchomieniowe VMware Spring Runtime. Aby uzyskać więcej informacji na temat rejestrowania i używania tej usługi pomocy technicznej, zobacz sekcję Pomoc techniczna w temacie Enterprise FAQ from VMware (Często zadawane pytania dotyczące przedsiębiorstwa z programu VMware). W przypadku innych problemów otwórz bilet pomocy technicznej dla firmy Microsoft.

Następne kroki