Поделиться через


Устранение распространенных проблем при работе с Azure Spring Apps

Примечание.

Планы Basic, Standardи Enterprise вступили в период вывода из обращения 17 марта 2025 года. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.

План стандартного потребления и выделенный план вошли в период вывода из эксплуатации 30 сентября 2024 года, с полным завершением работы к концу марта 2025 года. Для получения дополнительной информации см. «Миграция стандартного потребления и выделенного плана Azure Spring Apps в Azure Container Apps».

Эта статья относится к:✅ Basic/Standard ✅ Enterprise

В этой статье приводятся инструкции по устранению проблем с развертыванием Azure Spring Apps. Дополнительные сведения см. в статье "Часто задаваемые вопросы о Azure Spring Apps".

Проблемы с доступностью, производительностью и приложениями

Не удается запустить приложение

Когда приложение не удается запустить, возможно, вы обнаружите, что ее конечная точка не может быть подключена или возвращает значение 502 после нескольких повторных попыток.

Для устранения неполадок экспортируйте журналы в Azure Log Analytics. Таблица для журналов приложений Spring называется AppPlatformLogsforSpring. Дополнительные сведения см. в разделе Анализ журналов и метрик на основе параметров диагностики.

В журналах может появиться следующее сообщение об ошибке: org.springframework.context.ApplicationContextException: Unable to start web server

Это сообщение указывает на одну из двух вероятных проблем:

  • отсутствует один из компонентов или одна из его зависимостей;
  • одно из свойств бина отсутствует или некорректно. В этом случае отображается "java.lang.IllegalArgumentException".

Привязки служб также могут привести к сбоям при запуске приложения. Отправьте запрос к журналам, используя ключевые слова, относящиеся к привязанным службам. Например, приложение имеет привязку к экземпляру MySQL, для которого установлено локальное системное время. Если приложение не запускается, в журнале может появиться следующее сообщение об ошибке:

"java.sql.SQLException: The server time zone value 'Coordinated Universal Time' is unrecognized or represents more than one time zone." (Значение часового пояса сервера Coordinated Universal Time не распознано или представляет несколько часовых поясов.).

Чтобы устранить эту ошибку, перейдите к параметрам сервера экземпляра MySQL и измените значение time_zone с SYSTEM на +0:00.

В приложении происходит сбой или возникает непредвиденная ошибка

При отладке сбоев приложения начните с проверки состояния выполнения и статуса обнаружения приложения. Чтобы это сделать, перейдите на Приложения в Azure портале, чтобы убедиться, что состояния всех приложений находятся в статусах Запущено и Активно.

  • Если статус Выполняется, но статус обнаружения не UP, перейдите в раздел "Не удается зарегистрировать мое приложение".

  • Если состояние обнаружения — UP, перейдите к метрикам, чтобы проверить работоспособность приложения. Проверьте следующие метрики:

    • tomcat.global.error:

      Здесь перечислены все исключения приложения Spring. Если это число большое, перейдите в службу Azure Log Analytics и проверьте журналы приложений.

    • jvm.memory.max:

      Максимальный объем памяти, доступный приложению. Сумма может быть не определена или может измениться с течением времени, если она определена. Если объем используемой и зафиксированной памяти определен, он никогда не превышает максимальный объем памяти. Однако, выделение памяти может завершиться сбоем с сообщением OutOfMemoryError, если попытка увеличить используемую память приводит к ситуации, когда использованная память превышает зафиксированную память >, даже если использованная память < = максимальная память все еще правдива. В таком случае попытайтесь увеличить максимальный размер кучи с помощью параметра -Xmx.

    • jvm.memory.used:

      Объем используемой приложением памяти в байтах. Для нормальной загрузки приложения Java этот ряд метрик преобразуется в пилообразный шаблон, в котором использование памяти постоянно увеличивается и уменьшается с небольшим приращением, а затем резко падает, и шаблон повторяется. Такой ряд метрик образуется из-за сборки мусора на виртуальной машине Java, где действия сборки представляют собой падения в "пилообразном" шаблоне.

      Эта метрика важна для выявления проблем с памятью, например:

      • резкое увеличение памяти в самом начале;
      • резкое выделение памяти для конкретного логического пути;
      • постепенные утечки памяти.

    Дополнительные сведения см. в разделе Метрики.

    Примечание.

    Эти метрики доступны только для приложений Spring Boot. Чтобы включить эти метрики, добавьте spring-boot-starter-actuator зависимость. Дополнительные сведения см. в разделе "Добавление зависимостей актатора" приложения "Управление и мониторинг" с помощью Spring Boot Actuator.

  • Если приложение не запускается, убедитесь, что приложение имеет допустимые параметры виртуальной машины Java. Если для памяти виртуальной машины Java установлено слишком высокое значение, в журналах может появиться следующее сообщение об ошибке:

    "required memory 2728741K is greater than 2000M available for allocation" (Требуемая память 2728741K превышает объем 2000M, доступный для выделения).

Дополнительные сведения об Azure Log Analytics см. в разделе Начало работы со службой Log Analytics в Azure Monitor.

В приложении наблюдается высокая загрузка ЦП или интенсивное потребление памяти

Если в приложении наблюдается высокая загрузка ЦП или интенсивное потребление памяти, возникает одно из двух событий:

  • все экземпляры приложения имеют высокий уровень загрузки ЦП и потребления памяти;
  • некоторые экземпляры приложения имеют высокий уровень загрузки ЦП и потребления памяти.

Чтобы выяснить, какая ситуация применяется, выполните следующие действия.

  1. Перейдите в раздел Метрики и выберите Процент использования ЦП службой или Используемая память для службы.
  2. Добавьте фильтр App=, чтобы указать, какое приложение нужно отслеживать.
  3. Разделите метрики по экземплярам.

Если все экземпляры имеют высокий уровень загрузки ЦП или потребления памяти, необходимо либо горизонтально увеличить масштаб приложения, либо вертикально увеличить объем памяти или мощность ЦП. Дополнительные сведения см. в разделе Учебник. Масштабирование приложения в Azure Spring Apps.

Если некоторые из экземпляров имеют высокий уровень загрузки ЦП или потребления памяти, проверьте состояние экземпляра и состояние его обнаружения.

Дополнительные сведения см. в статье Метрики для Azure Spring Apps.

Если все экземпляры работают, перейдите в службу Azure Log Analytics, запросите в ней журналы приложений и просмотрите логику кода. Эта проверка помогает увидеть, может ли каждый из них повлиять на разбиение шкалы. Дополнительные сведения см. в разделе Анализ журналов и метрик на основе параметров диагностики.

Дополнительные сведения об Azure Log Analytics см. в разделе Начало работы со службой Log Analytics в Azure Monitor. Запросите журналы с помощью языка запросов Kusto.

Контрольный список для развертывания приложения Spring в Azure Spring Apps

Прежде чем приступить к подключению приложения, убедитесь, что оно соответствует следующим критериям.

  • Приложение можно запустить локально с указанной версией среды выполнения Java.
  • Конфигурация среды выполнения (ЦП, ОЗУ и экземпляры) соответствует минимальным требованиям, установленным поставщиком приложения.
  • Для элементов конфигурации установлены ожидаемые значения. Для получения дополнительной информации см. Настройка экземпляра сервера конфигурации Spring Cloud для вашей службы. Сведения о плане предприятия см. в разделе "Использование службы конфигурации приложений".
  • Для переменных среды установлены ожидаемые значения.
  • Для параметров виртуальной машины Java установлены ожидаемые значения.
  • Советуем отключить или удалить внедренный сервер конфигурации и службу Spring Service Registry из пакета приложения.
  • Если к любым ресурсам Azure нужно применить привязку службы, убедитесь, что целевые ресурсы работают.

Настройка и управление

Возникла проблема при создании экземпляра службы Azure Spring Apps

Когда вы настраиваете экземпляр службы Azure Spring Apps с помощью портала Azure, Azure Spring Apps выполняет проверку автоматически.

Но если вы попытаетесь настроить экземпляр службы Azure Spring Apps с помощью Azure CLI или шаблона Azure Resource Manager, убедитесь, что выполнены следующие условия:

  • подписка активна;
  • Azure Spring Apps доступен в регионе, который вы используете. Дополнительные сведения см. в статье Часто задаваемые вопросы о Приложениях Azure Spring.
  • Группа ресурсов для экземпляра уже создана.
  • имя ресурса соответствует правилу именования. Имя должно содержать только строчные буквы, цифры и дефисы. Первый символ должен быть буквой. Последний символ должен быть буквой или цифрой. Его длина должна составлять от 2 до 32 символов.

Чтобы настроить экземпляр службы Azure Spring Apps с помощью шаблона Resource Manager, обратитесь к разделу Сведения о структуре и синтаксисе шаблонов Azure Resource Manager.

Имя инстанции службы Azure Spring Apps используется для запроса имени поддомена под azuremicroservices.io, поэтому установка не удалась, если имя конфликтует с уже существующим. Дополнительные сведения можно найти в журналах действий.

Не удается развернуть приложение .NET Core

Нельзя передать ZIP-файл для приложения .NET Core Steeltoe с помощью портала Azure или шаблона Диспетчера ресурсов.

При развертывании пакета приложения с помощью Azure CLI будет выполняться периодический опрос для получения сведений о ходе выполнения развертывания, а в конце будут отображаться результаты развертывания.

Убедитесь, что приложение упаковано в правильный ZIP-файл. Если он не упаковирован правильно, процесс перестает отвечать или вы получаете сообщение об ошибке.

Не удается развернуть JAR-пакет

Невозможно отправить JAR-пакет или пакет источника с помощью портала Azure или шаблона Диспетчера ресурсов.

При развертывании пакета приложения с помощью Azure CLI будет выполняться периодический опрос для получения сведений о ходе выполнения развертывания, а в конце будут отображаться результаты развертывания.

Если опрос будет прерван, вы сможете выполнить приведенную ниже команду для получения журналов развертывания.

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

Убедитесь, что приложение упаковано в правильный исполняемый JAR-формат. Если он не упаковирован правильно, вы получите сообщение об ошибке, аналогичное следующему примеру: Error: Invalid or corrupt jarfile /jar/11111111-1111-1111-1111-111111111111

Не могу развернуть пакет исходного кода

Невозможно отправить JAR-пакет или пакет источника с помощью портала Azure или шаблона Диспетчера ресурсов.

При развертывании пакета приложения с помощью Azure CLI будет выполняться периодический опрос для получения сведений о ходе выполнения развертывания, а в конце будут отображаться результаты развертывания.

Если опрос будет прерван, вы сможете выполнить приведенную ниже команду для получения сборки и журналов развертывания.

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

Однако один экземпляр службы Azure Spring Apps может активировать только одно задание сборки для одного исходного пакета одновременно. Дополнительные сведения см. в разделах Развертывание приложения и Настройка промежуточной среды в Azure Spring Apps.

Не удается зарегистрировать приложение

В большинстве случаев такая ситуация возникает, когда Необходимые зависимости и Обнаружение служб не настроены должным образом в POM-файле. После настройки встроенная конечная точка сервера Service Registry будет внедрена в приложение в качестве переменной среды. Приложения смогут регистрироваться на сервере реестра служб и обнаруживать другие зависимые приложения.

Перед тем как новый зарегистрированный экземпляр начнет принимать трафик, подождите как минимум две минуты.

Если вы переносите существующее решение на основе Spring Cloud в Azure, обязательно удалите или отключите временный реестр служб и сервер конфигурации чтобы избежать конфликтов с управляемыми экземплярами, предоставляемыми Azure Spring Apps.

Вы также можете проверить журналы клиента Service Registry в службе Azure Log Analytics. Дополнительные сведения см. в разделе Анализ журналов и метрик на основе параметров диагностики.

Дополнительные сведения об Azure Log Analytics см. в разделе Начало работы со службой Log Analytics в Azure Monitor. Запросите журналы с помощью языка запросов Kusto.

Я хочу проверить переменные среды моего приложения

Переменные среды предоставляют сведения платформе Azure Spring Apps, что позволяет Azure определить, где и как необходимо настроить службы, составляющие приложение. Проверка правильности переменных среды является необходимым первым шагом при устранении потенциальных проблем. Вы можете использовать конечную точку Spring Boot Actuator для обзора ваших переменных среды.

Предупреждение

Эта процедура делает переменные среды доступными, используя тестовую конечную точку. Не продолжайте, если тестовая конечная точка является общедоступной или если приложению назначено доменное имя.

  1. Перейдите к https://<your-application-test-endpoint>/actuator/health.

    Ответ, аналогичный {"status":"UP"}, указывает, что конечная точка включена. Если ответ отрицательный, включите следующую зависимость в файл POM.xml:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  2. Если конечная точка Spring Boot Actuator включена, перейдите на портал Azure и найдите страницу конфигурации приложения. Добавьте переменную среды с именем MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE и значением *.

  3. Перезапустите приложение.

  4. Перейдите к https://<your-application-test-endpoint>/actuator/env и проверьте ответ. Он должен выглядеть так:

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

Найдите дочерний узел с именем systemEnvironment. Этот узел содержит переменные среды приложения.

Внимание

Не забудьте отменить раскрытие переменных среды перед тем, как сделать приложение общедоступным. Перейдите на портал Azure, найдите страницу конфигурации приложения и удалите следующую переменную среды: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE.

Не удается найти метрики или журналы для приложения

Перейдите в приложения, чтобы убедиться, что статусы приложений работают и включены.

Проверьте, включена ли JMX функция в пакете приложения. Эту функцию можно включить с помощью свойства конфигурации spring.jmx.enabled=true.

Убедитесь, что зависимость spring-boot-actuator включена в пакете приложения и успешно загружается.

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

Если журналы приложения можно архивировать в учетную запись хранения, но нельзя отправить в Azure Log Analytics, проверьте, правильно ли настроена рабочая область. Дополнительные сведения см. в статье "Создание рабочей области Log Analytics". Кроме того, помните, что базовый план не предоставляет соглашение об уровне обслуживания (SLA). Дополнительные сведения см. в соглашениях об уровне обслуживания (SLA) для веб-служб.

План "Корпоративный"

Ошибка 112039: не удалось выполнить покупку в Azure Marketplace

Создание экземпляра плана Azure Spring Apps Enterprise завершается сбоем с кодом ошибки "112039". Дополнительные сведения см. в подробном сообщении об ошибке в следующем списке:

  • "Не удалось совершить покупку на Azure Marketplace, так как Microsoft.SaaS RP не зарегистрирован в подписке Azure." Покупка плана Azure Spring Apps Enterprise как предложения SaaS от VMware.

    Чтобы создать экземпляр Azure Spring Apps Enterprise, сначала необходимо зарегистрировать поставщика ресурсов Microsoft.SaaS. Посмотрите, как зарегистрировать поставщика ресурсов.

  • "Не удалось загрузить продукт каталога vmware-inc.azure-spring-cloud-vmware-tanzu-2 в магазине подписок Azure." Адрес учетной записи выставления счетов вашей подписки Azure не поддерживается.

    Дополнительные сведения см. в разделе Отсутствуют доступные планы для рынка '<Расположение>'.

  • "Не удалось выполнить покупку в Azure Marketplace из-за проверки подписи в юридическом соглашении Marketplace. Проверьте, согласована ли подписка Azure с условиями vmware-inc.azure-spring-cloud-vmware-tanzu-2.asa-ent-hr-mtr.: Ваша подписка Azure не подписала условия предложения и плана, который планируется приобрести.

    Перейдите к подписке Azure и выполните следующую команду Azure CLI, чтобы принять условия:

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

    Если это не помогает, обратитесь в службу поддержки, указав следующие сведения.

    • AZURE_TENANT_ID: идентификатор клиента Azure, который содержит подписку Azure.
    • AZURE_SUBSCRIPTION_ID: идентификатор подписки Azure, используемый для создания экземпляра Azure Spring Apps.
    • SPRING_CLOUD_NAME: имя экземпляра, на котором произошел сбой.
    • ERROR_MESSAGE: наблюдаемое сообщение об ошибке.

Отсутствуют доступные планы для рынка '<Расположение>'

При посещении предложения SaaS Azure Spring Apps Enterprise в Azure Marketplace, может отображаться сообщение: «Планы недоступны для рынка "<Расположение>"», как показано на следующем рисунке.

Снимок экрана портала Azure, показывающий сообщение об ошибке:

Для плана Azure Spring Apps Enterprise клиентам необходимо платить за лицензию на компоненты Tanzu через предложение Azure Marketplace. Для выполнения покупки в Azure Marketplace страна или регион учетной записи выставления счетов для вашей подписки Azure должны входить в число поддерживаемых географических расположений предложения SaaS.

Azure Spring Apps Enterprise теперь поддерживает все географические расположения, поддерживаемые Azure Marketplace. См. раздел "Поддерживаемые географические расположения" для поддержки географической доступности и валюты для коммерческой платформы.

Если у вас есть доступ администратора, вы можете просмотреть платежную учетную запись вашей подписки. См. раздел Просмотр учетных записей выставления счетов.

Мне нужна поддержка VMware Spring Runtime (только план предприятия)

План Enterprise имеет встроенную поддержку VMware Spring Runtime, поэтому вы можете открыть запросы в службу поддержки VMware , если вы считаете, что проблема находится в области поддержки VMware Spring Runtime. Дополнительные сведения о поддержке VMware Spring Runtime см. в статье VMware Spring Runtime. Дополнительные сведения о регистрации и использовании этой службы поддержки см. в разделе "Часто задаваемые вопросы о поддержке" из VMware. Для любых других проблем откройте запрос в службу поддержки с корпорацией Майкрософт.

Следующие шаги