Capturar o despejo de heap e o despejo de thread manualmente e usar o Java Flight Recorder no Azure Spring Apps
Observação
Os planos Básico, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de aposentadoria de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira o anúncio de desativação dos Aplicativos Spring do Azure.
O plano Consumo Standard e dedicado será preterido a partir de 30 de setembro de 2024, com desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para mais informações, confira Migrar o plano dedicado e consumo Standard dos Aplicativos Spring do Azure para os Aplicativos de Contêiner do Azure.
Este artigo se aplica ao: ✔️ nível Básico/Standard ✔️ nível Enterprise
Este artigo descreve como gerar manualmente um despejo de heap ou despejo de thread e como iniciar o JFR (Java Flight Recorder).
Uma solução de problemas eficaz é essencial para garantir que você possa corrigir problemas em ambientes de produção e manter seu negócio online. O Azure Spring Apps fornece consulta e streaming de log do aplicativo, emissão de métricas avançadas, alertas, rastreamento distribuído e assim por diante. No entanto, quando você recebe alertas sobre solicitações com alta latência, vazamento de heap de JVM ou alto uso de CPU, não há nenhuma solução de última hora que seja perfeita. Por esse motivo, permitimos que você gere um despejo de heap, gere um despejo de thread e inicie o JFR manualmente.
Pré-requisitos
- Uma instância de serviço do Azure Spring Apps implantada. Para começar, confira Guia de Início Rápido: Implantar seu primeiro aplicativo no Azure Spring Apps.
- Pelo menos um aplicativo já criado na instância de serviço.
- Um armazenamento persistente próprio, conforme descrito em Como habilitar seu armazenamento persistente no Azure Spring Apps. Esse armazenamento é usado para salvar arquivos de diagnóstico gerados. Os caminhos que você fornecer nos valores de parâmetro abaixo deverão estar no caminho de montagem do armazenamento persistente associado ao seu aplicativo. Se você quiser usar um caminho no caminho de montagem, precisará criar o subcaminho com antecedência.
Gerar um despejo de heap
Use o comando a seguir para gerar um despejo de heap do aplicativo no Azure Spring Apps.
az spring app deployment generate-heap-dump \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--app <app-name> \
--deployment <deployment-name> \
--app-instance <app-instance name> \
--file-path <your-target-file-path-in-your-persistent-storage-mount-path>
Gerar um despejo de thread
Use o comando a seguir para gerar um despejo de thread do aplicativo no Azure Spring Apps.
az spring app deployment generate-thread-dump \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--app <app-name> \
--deployment <deployment-name> \
--app-instance <app-instance name> \
--file-path <your-target-file-path-in-your-persistent-storage-mount-path>
Iniciar o JFR
Use o comando a seguir para iniciar o JFR para seu aplicativo no Azure Spring Apps.
az spring app deployment start-jfr \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--app <app-name> \
--deployment <deployment-name> \
--app-instance <app-instance name> \
--file-path <your-target-file-path-in-your-persistent-storage-mount-path> \
--duration <duration-of-JFR>
O valor padrão para duration
é 60 segundos.
Gerar um despejo usando o portal do Azure
Use as etapas a seguir para gerar um despejo de heap ou de thread do aplicativo no Azure Spring Apps.
No portal do Azure, navegue até seu aplicativo de destino e selecione Solução de problemas.
No painel Solução de problemas, selecione a instância do aplicativo e o tipo de despejo que você gostaria de coletar.
No campo Caminho do arquivo, especifique o caminho de montagem do armazenamento persistente.
Selecione Coletar.
Obtenha seus arquivos de diagnóstico
Navegue para o caminho do arquivo de destino em seu armazenamento persistente e localize o despejo/JFR. Desse local, você pode baixá-los para o seu computador local. O nome do arquivo gerado será semelhante a <app-instance>_heapdump_<time-stamp>.hprof
para o despejo de heap, <app-instance>_threaddump_<time-stamp>.txt
para o despejo de thread e <app-instance>_JFR_<time-stamp>.jfr
para o arquivo JFR.