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

Примечание.

Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.

Эта статья относится к: ✔️ 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 не распознано или представляет несколько часовых поясов.).

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

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

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

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

  • Если состояние обнаружения — 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.

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

  • "Не удалось загрузить продукт каталога 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. Для любых других проблем откройте запрос в службу поддержки с корпорацией Майкрософт.

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