Capturar o despejo de heap e o despejo de thread manualmente e usar o Java Flight Recorder no Azure Spring Apps

Observação

Azure Spring Apps é o novo nome do serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns locais por um tempo enquanto trabalhamos para atualizar ativos como capturas de tela, vídeos e diagramas.

Este artigo aplica-se a: ✔️ Java ❌ C#

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

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.

  1. No portal do Azure, navegue até seu aplicativo de destino e selecione Solução de problemas.

    Screenshot of the Azure portal showing the app Overview page with the Troubleshooting button highlighted.

  2. No painel Solução de problemas, selecione a instância do aplicativo e o tipo de despejo que você gostaria de coletar.

    Screenshot of the Azure portal Troubleshooting pane.

  3. No campo Caminho do arquivo, especifique o caminho de montagem do armazenamento persistente.

  4. 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.

Próximas etapas