Partilhar via


Use as configurações de diagnóstico das opções da JVM para solução de problemas avançada no Azure Spring Apps

Nota

Azure Spring Apps é o novo nome para o serviço Azure Spring Cloud. Embora o serviço tenha um novo nome, você verá o nome antigo em alguns lugares 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 aplica-se a: ✔️ Basic/Standard ✔️ Enterprise

Este artigo mostra como usar as configurações de diagnóstico por meio das opções da JVM para conduzir a solução de problemas avançada no Azure Spring Apps.

Há vários parâmetros de inicialização de aplicativos baseados em JVM relacionados a logs de despejo de pilha, Java Flight Recorder (JFR) e coleta de lixo (GC). No Azure Spring Apps, damos suporte à configuração da JVM usando as opções da JVM.

Para obter mais informações sobre como configurar parâmetros de inicialização de aplicativos baseados em JVM, consulte az spring app deployment na documentação de referência da CLI do Azure. As seções a seguir fornecem vários exemplos de valores úteis para o --jvm-options parâmetro.

Pré-requisitos

  • Uma instância de serviço do Azure Spring Apps implantada. Siga nosso início rápido na implantação de um aplicativo por meio da CLI do Azure para começar.
  • Pelo menos um aplicativo já criado em sua instância de serviço.
  • Seu próprio armazenamento persistente, conforme descrito em Como habilitar seu próprio armazenamento persistente no Azure Spring Apps. Esse armazenamento é usado para salvar os arquivos de diagnóstico gerados. Os caminhos fornecidos nos valores de parâmetro abaixo devem estar sob o caminho de montagem do armazenamento persistente vinculado ao seu aplicativo. Se você quiser usar um caminho sob o caminho de montagem, certifique-se de criar o subcaminho com antecedência.

Gerar um despejo de pilha quando falta memória

Use o parâmetro a seguir --jvm-options para gerar um despejo de pilha quando encontrar um erro de falta de memória.

--jvm-options="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<path-to-heap-dump-folder>"

Como alternativa para especificar o caminho para a pasta de despejo de pilha, você pode fornecer um nome de arquivo específico. No entanto, é altamente recomendável que você forneça um caminho de pasta. Se você fornecer um nome de arquivo, o comando gerará um despejo de pilha apenas para o primeiro erro de falta de memória, devido às limitações do formato de arquivo HPROF. Se você fornecer um caminho de pasta, obterá um despejo de pilha em um arquivo com um nome gerado automaticamente para cada erro de falta de memória.

Gerar logs GC

Use o parâmetro a seguir --jvm-options para gerar logs GC. Para obter mais informações, consulte a documentação oficial da JVM.

--jvm-options="-XX:+PrintGCDetails -Xloggc:<path-to-GC-log-file>"

Gerar um arquivo JFR ao sair

Use o seguinte --jvm-options parâmetro para gerar um arquivo JFR. Para obter mais informações, consulte a documentação oficial da JVM.

--jvm-options="-XX:StartFlightRecording=dumponexit=true,filename=<path-to-JFR-file>"

Configurar o caminho para os arquivos gerados

Para garantir que você possa acessar seus arquivos, certifique-se de que o caminho de destino do arquivo gerado esteja no armazenamento persistente vinculado ao seu aplicativo. Por exemplo, você pode usar JSON semelhante ao exemplo a seguir ao criar seu armazenamento persistente no Azure Spring Apps.

    {
       "customPersistentDisks": [
          {
              "storageName": "<storage-resource-name>",
              "customPersistentDiskProperties": {
                  "type": "AzureFileVolume",
                  "shareName": "<azure-file-share-name>",
                  "mountPath": "<unique-mount-path>",
                  "mountOptions": [
                      "uid=0",
                      "gid=0"
                   ],
                   "readOnly": false 
                }
          },
          {
              "storageName": "<storage-resource-name>",
              "customPersistentDiskProperties": {
                  "type": "AzureFileVolume",
                  "shareName": "<azure-file-share-name>",
                  "mountPath": "<unique-mount-path>",
                  "readOnly": true
              }
          }
       ]
    }

Como alternativa, você pode usar o seguinte comando para acrescentar ao armazenamento persistente.

az spring app append-persistent-storage \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <app-name> \
    --persistent-storage-type AzureFileVolume \
    --storage-name <storage-resource-name> \
    --share-name <azure-file-share-name> \
    --mount-path <unique-mount-path>

Próximos passos