Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Note
Os planos Basic, Standarde Enterprise entraram em um período de aposentadoria em 17 de março de 2025. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.
Este artigo aplica-se a:✅ Empresa Básica/Padrão ✅
Este artigo fornece instruções para solucionar problemas de desenvolvimento do Azure Spring Apps. Para obter mais informações, consulte Perguntas frequentes sobre o Azure Spring Apps.
Problemas de disponibilidade, desempenho e aplicativos
A minha aplicação não consegue iniciar
Quando a sua aplicação não consegue iniciar, pode verificar que não é possível estabelecer ligação com o seu ponto de extremidade ou que este retorna um erro 502 após algumas tentativas de ligação.
Para solucionar problemas, exporte os logs para o Azure Log Analytics. A tabela para logs de aplicativos Spring é denominada AppPlatformLogsforSpring. Para saber mais, consulte Analisar logs e métricas com configurações de diagnóstico.
A seguinte mensagem de erro pode aparecer em seus logs: org.springframework.context.ApplicationContextException: Unable to start web server
A mensagem indica um dos dois problemas prováveis:
- Falta um dos feijões ou uma das suas dependências.
- Uma das propriedades do bean está ausente ou é inválida. Nesse caso, "java.lang.IllegalArgumentException" é exibido.
As associações de serviço também podem causar falhas de inicialização do aplicativo. Para consultar os logs, use palavras-chave relacionadas aos serviços acoplados. Por exemplo, vamos supor que seu aplicativo tenha uma ligação a uma instância do MySQL definida para a hora do sistema local. Se o aplicativo falhar ao iniciar, a seguinte mensagem de erro pode aparecer no log:
"java.sql.SQLException: O valor de fuso horário do servidor 'Tempo Universal Coordenado' não é reconhecido ou representa mais de um fuso horário."
Para corrigir esse erro, vá para os parâmetros do servidor da sua instância do MySQL e altere o valor time_zone de SYSTEM para +0:00.
Meu aplicativo falha ou gera um erro inesperado
Ao depurar falhas de aplicações, comece por verificar o estado de execução e descoberta da aplicação. Para fazer isso, vá para Aplicativos no portal do Azure para garantir que os status de todos os aplicativos estejam em Execução e UP.
Se o estado for Em execução, mas o estado da descoberta não estiver up, consulte a seção "Meu aplicativo não pode ser registrado".
Se o estado da descoberta for UP, vá para Métricas para verificar a integridade da aplicação. Inspecione as seguintes métricas:
tomcat.global.error:Todas as exceções do aplicativo Spring são contadas aqui. Se esse número for grande, vá para o Azure Log Analytics para inspecionar os logs do aplicativo.
jvm.memory.max:A quantidade máxima de memória disponível para o aplicativo. A quantidade pode estar indefinida ou pode mudar ao longo do tempo se for definida. Se for definido, a quantidade de memória usada e comprometida é sempre menor ou igual ao máximo. No entanto, uma alocação de memória pode falhar com uma
OutOfMemoryErrormensagem se a alocação tentar aumentar a memória usada de tal forma que usado > comprometido, mesmo se usado <= max ainda é verdadeiro. Em tal situação, tente aumentar o tamanho máximo da pilha usando o parâmetro-Xmx.jvm.memory.used:A quantidade de memória em bytes que é usada atualmente pelo aplicativo. Para uma aplicação Java de carga normal, esta série métrica forma um padrão de dente de serra , onde o uso de memória aumenta e diminui constantemente em pequenos incrementos e de repente cai muito, e então o padrão se repete. Essa série de métricas ocorre devido à coleta de lixo dentro da máquina virtual Java, onde as ações de coleta representam quedas no padrão dente de serra.
Essa métrica é importante para ajudar a identificar problemas de memória, como:
- Uma explosão de memória logo no início.
- A alocação de memória de surto para um caminho lógico específico.
- Fugas de memória graduais.
Para obter mais informações, consulte Métricas.
Note
Essas métricas estão disponíveis apenas para aplicativos Spring Boot. Para habilitar essas métricas, adicione a
spring-boot-starter-actuatordependência. Para obter mais informações, consulte a seção Adicionar dependência do atuador do aplicativo Gerenciar e monitorar com o Spring Boot Actuator.Se o aplicativo falhar ao iniciar, verifique se o aplicativo tem parâmetros jvm válidos. Se a memória jvm estiver definida como muito alta, a seguinte mensagem de erro pode aparecer em seus logs:
"memória necessária de 2728741K é maior que os 2000M disponíveis para alocação"
Para saber mais sobre o Azure Log Analytics, consulte Introdução ao Log Analytics no Azure Monitor.
Meu aplicativo experimenta alto uso de CPU ou alto uso de memória
Se o seu aplicativo tiver alto uso de CPU ou memória, uma das duas coisas é verdadeira:
- Todas as instâncias do aplicativo experimentam alto uso de CPU ou memória.
- Algumas das instâncias do aplicativo experimentam alto uso de CPU ou memória.
Para verificar qual situação se aplica, use as seguintes etapas:
- Vá para Métricas e selecione Porcentagem de uso da CPU de serviço ou Memória de serviço usada.
- Adicione um filtro App= para especificar qual aplicativo você deseja monitorar.
- Divida as métricas por instância.
Se todas as instâncias estiverem enfrentando alto uso de CPU ou memória, você precisará dimensionar o aplicativo ou aumentar o uso de CPU ou memória. Para obter mais informações, consulte Tutorial: Dimensionar um aplicativo no Azure Spring Apps.
Se algumas instâncias estiverem com alto uso de CPU ou memória, verifique o status da instância e seu status de descoberta.
Para obter mais informações, consulte Métricas para Azure Spring Apps.
Se todas as instâncias estiverem ativas e em execução, vá para o Azure Log Analytics para consultar os logs do aplicativo e revisar a lógica do código. Esta revisão ajuda você a ver se algum deles pode afetar o particionamento de escala. Para obter mais informações, consulte Analisar logs e métricas com configurações de diagnóstico.
Para saber mais sobre o Azure Log Analytics, consulte Introdução ao Log Analytics no Azure Monitor. Consulte os logs usando a linguagem de consultas Kusto.
Lista de verificação para implantar seu aplicativo Spring no Azure Spring Apps
Antes de integrar a sua candidatura, certifique-se de que cumpre os seguintes critérios:
- O aplicativo pode ser executado localmente com a versão de tempo de execução Java especificada.
- A configuração do ambiente (CPU/RAM/Instances) atende ao requisito mínimo definido pelo provedor do aplicativo.
- Os itens de configuração têm seus valores esperados. Para obter mais informações, consulte Configurar uma instância do Spring Cloud Config Server para seu serviço. Para o plano Enterprise, consulte Usar o serviço de configuração do aplicativo.
- As variáveis de ambiente têm seus valores esperados.
- Os parâmetros da JVM têm seus valores esperados.
- Recomendamos que você desabilite ou remova os serviços incorporados do Config Server e do Spring Service Registry do pacote do aplicativo.
- Se algum recurso do Azure for vinculado por meio da Vinculação de Serviço, verifique se os recursos de destino estão ativos e em execução.
Configuração e gestão
Encontrei um problema ao criar uma instância de serviço do Azure Spring Apps
Quando você configura uma instância de serviço do Azure Spring Apps usando o portal do Azure, o Azure Spring Apps executa a validação para você.
Mas se você tentar configurar a instância de serviço do Azure Spring Apps usando a CLI do Azure ou o modelo do Azure Resource Manager, verifique se você atende às seguintes condições:
- A subscrição está ativa.
- O Azure Spring Apps está disponível na região que está a utilizar. Para obter mais informações, consulte as Perguntas frequentes do Azure Spring Apps.
- O grupo de recursos para a instância já está criado.
- O nome do recurso está em conformidade com a regra de nomenclatura. O nome deve conter apenas letras minúsculas, números e hífenes. O primeiro caractere deve ser uma letra. O último caractere deve ser uma letra ou número. O valor deve conter de 2 a 32 caracteres.
Se você quiser configurar a instância de serviço do Azure Spring Apps usando o modelo do Resource Manager, primeiro consulte Compreender a estrutura e a sintaxe dos modelos do Azure Resource Manager.
O nome da instância de serviço do Azure Spring Apps é usado para solicitar um nome de subdomínio em azuremicroservices.io, portanto, a configuração falhará se o nome entrar em conflito com um nome existente. Você pode encontrar mais detalhes nos registros de atividades.
Não consigo implantar um aplicativo .NET Core
Não é possível carregar um arquivo de.zip para um aplicativo .NET Core Steeltoe usando o portal do Azure ou o modelo do Gerenciador de Recursos.
Quando você implanta seu pacote de aplicativo usando a CLI do Azure, a CLI do Azure sonda periodicamente o progresso da implantação e, no final, exibe o resultado da implantação.
Certifique-se de que seu aplicativo está empacotado no formato de arquivo.zip correto. Se não estiver empacotado corretamente, o processo para de responder ou você recebe uma mensagem de erro.
Não consigo implantar um pacote JAR
Não é possível carregar o arquivo Java Archive (JAR)/pacote de código-fonte usando o portal do Azure ou o modelo do Gerenciador de Recursos.
Quando você implanta seu pacote de aplicativo usando a CLI do Azure, a CLI do Azure sonda periodicamente o progresso da implantação e, no final, exibe o resultado da implantação.
Se a sondagem for interrompida, você ainda poderá usar o seguinte comando para buscar os logs de implantação:
az spring app show-deploy-log --name <app-name>
Certifique-se de que seu aplicativo esteja empacotado no formato JAR executável correto. Se ele não estiver empacotado corretamente, você receberá uma mensagem de erro semelhante ao exemplo a seguir: Error: Invalid or corrupt jarfile /jar/11111111-1111-1111-1111-111111111111.
Não consigo implantar um pacote de código-fonte
Não é possível carregar JAR/pacote de origem usando o portal do Azure ou o modelo do Gerenciador de Recursos.
Quando você implanta seu pacote de aplicativo usando a CLI do Azure, a CLI do Azure sonda periodicamente o progresso da implantação e, no final, exibe o resultado da implantação.
Se a sondagem for interrompida, você ainda poderá usar o seguinte comando para buscar os logs de compilação e implantação:
az spring app show-deploy-log --name <app-name>
No entanto, uma instância de serviço do Azure Spring Apps pode disparar apenas um trabalho de compilação para um pacote de origem de cada vez. Para obter mais informações, consulte Implantar um aplicativo e Configurar um ambiente de preparo no Azure Spring Apps.
A minha candidatura não pode ser registada
Na maioria dos casos, essa situação ocorre quando as dependências necessárias e a descoberta de serviço não estão configuradas corretamente no arquivo POM (Project Object Model). Depois de configurado, o ponto de extremidade embutido do servidor do Registro de Serviço é injetado como uma variável de ambiente com a sua aplicação. Em seguida, os aplicativos se registram no servidor do Registro de Serviço e descobrem outros aplicativos dependentes.
Aguarde pelo menos dois minutos antes que uma instância recém-registrada comece a receber tráfego.
Se você estiver migrando uma solução existente baseada no Spring Cloud para o Azure, certifique-se de remover ou desabilitar suas instâncias ad-hoc do Registro de Serviço e do Servidor de Configuração para evitar conflitos com as instâncias gerenciadas fornecidas pelo Azure Spring Apps.
Você também pode verificar os logs do cliente do Registro de Serviço no Azure Log Analytics. Para obter mais informações, consulte Analisar logs e métricas com configurações de diagnóstico
Para saber mais sobre o Azure Log Analytics, consulte Introdução ao Log Analytics no Azure Monitor. Consulte os logs usando a linguagem de consultas Kusto.
Quero inspecionar as variáveis de ambiente do meu aplicativo
As variáveis de ambiente informam a estrutura do Azure Spring Apps, garantindo que o Azure entenda onde e como configurar os serviços que compõem seu aplicativo. Garantir que as variáveis de ambiente estejam corretas é uma primeira etapa necessária na solução de possíveis problemas. Você pode usar o ponto de extremidade Spring Boot Actuator para revisar suas variáveis de ambiente.
Warning
Este procedimento expõe as variáveis de ambiente usando o ponto de extremidade de teste. Não prossiga se o ponto de extremidade de teste estiver acessível publicamente ou se você tiver atribuído um nome de domínio ao seu aplicativo.
Aceda a
https://<your-application-test-endpoint>/actuator/health.Uma resposta semelhante a
{"status":"UP"}indica que o ponto de extremidade foi habilitado. Se a resposta for negativa, inclua a seguinte dependência no arquivo POM.xml :<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>Com o endpoint do Spring Boot Actuator ativado, aceda ao portal Azure e procure a página de configuração da sua aplicação. Adicione uma variável de ambiente com o nome
MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDEe o valor*.Reinicie o aplicativo.
Vá para
https://<your-application-test-endpoint>/actuator/enve inspecione a resposta. Deve ter a seguinte aparência:{ "activeProfiles": [], "propertySources": {, "name": "server.ports", "properties": { "local.server.port": { "value": 1025 } } } }
Encontre o nó filho chamado systemEnvironment. Este nó contém as variáveis de ambiente do seu aplicativo.
Important
Lembre-se de reverter a exposição das variáveis de ambiente antes de tornar seu aplicativo acessível ao público. Vá para o portal do Azure, procure a página de configuração do seu aplicativo e exclua esta variável de ambiente: MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE.
Não consigo encontrar métricas ou logs para meu aplicativo
Vá para Aplicativos para garantir que os status do aplicativo estejam em execução e UP.
Verifique se JMX está ativado no seu pacote de aplicação. Esse recurso pode ser ativado com a propriedade de configuração spring.jmx.enabled=true.
Verifique se a dependência está habilitada spring-boot-actuator no seu pacote de aplicativo e se ele é inicializado com êxito.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Se os logs do aplicativo puderem ser arquivados em uma conta de armazenamento, mas não enviados para o Azure Log Analytics, verifique se você configurou seu espaço de trabalho corretamente. Para obter mais informações, consulte Criar um espaço de trabalho do Log Analytics. Além disso, esteja ciente de que o plano Basic não fornece um contrato de nível de serviço (SLA). Para obter mais informações, consulte Contratos de nível de serviço (SLA) para serviços online.