Compartir vía


Uso de la configuración de diagnóstico de las opciones de JVM para la solución de problemas avanzada en Azure Spring Apps

Nota:

Los planes Básico, Estándar y Enterprise quedarán en desuso a partir de mediados de marzo de 2025, con un período de retirada de 3 años. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte el anuncio de retirada de Azure Spring Apps.

El plan de Consumo estándar y dedicado quedará obsoleto a partir del 30 de septiembre de 2024, con un cierre completo al cabo de seis meses. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte Migrar el consumo estándar y el plan dedicado de Azure Spring Apps a Azure Container Apps.

Este artículo se aplica a: ✔️ Java ❌ C#

Este artículo se aplica a: ✔️ Nivel Básico o Estándar ✔️ Enterprise

En este artículo se muestra cómo usar la configuración de diagnóstico a través de las opciones de JVM para llevar a cabo la solución de problemas avanzada en Azure Spring Apps.

Hay varios parámetros de inicio de aplicación basados en JVM relacionados con los registros de volcado de montón, Java Flight Recorder (JFR) y la recolección de elementos no utilizados. En Azure Spring Apps, se admite la configuración de JVM mediante opciones de JVM.

Para obtener más información sobre cómo configurar parámetros de inicio de aplicaciones basados en JVM, consulte az spring app deployment en la documentación de referencia de la CLI de Azure. En las secciones siguientes se proporcionan varios ejemplos de valores útiles para el parámetro --jvm-options.

Requisitos previos

  • Una instancia del servicio Azure Spring Apps implementada. Para comenzar, siga nuestro inicio rápido sobre la implementación de una aplicación mediante la CLI de Azure.
  • Al menos una aplicación ya creada en su instancia de servicio.
  • Su propio almacenamiento persistente, como se describe en Habilitación del almacenamiento persistente en Azure Spring Apps. Este almacenamiento se usa para guardar los archivos de diagnóstico generados. Las rutas de acceso que proporcione en los valores de parámetro siguientes deben estar en la ruta de acceso de montaje del almacenamiento persistente enlazado a la aplicación. Si quiere usar una ruta de acceso en la ruta de acceso de montaje, asegúrese de crear la subruta de acceso de antemano.

Generación de un volcado de memoria del montón cuando la memoria es insuficiente

Use el parámetro --jvm-options siguiente para generar un volcado de montón cuando se encuentre un error de memoria insuficiente.

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

Como alternativa a especificar la ruta de acceso a la carpeta de volcado de montón, puede proporcionar un nombre de archivo específico. Sin embargo, se recomienda encarecidamente que proporcione una ruta de acceso de carpeta en su lugar. Si proporciona un nombre de archivo, el comando generará un volcado de montón solo para el primer error de memoria insuficiente, debido a las limitaciones del formato de archivo HPROF. Si proporciona una ruta de acceso de carpeta, se obtiene un volcado de montón en un archivo con un nombre generado automáticamente para cada error de memoria insuficiente.

Generación de registros de GC

Use el parámetro --jvm-options siguiente para generar registros de GC. Para más información, consulte la documentación oficial de JVM.

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

Generación de un archivo JFR al salir

Use el parámetro --jvm-options siguiente para generar un archivo JFR. Para más información, consulte la documentación oficial de JVM.

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

Configuración de la ruta de acceso para los archivos generados

Para asegurarse de que puede acceder a los archivos, asegúrese de que la ruta de acceso de destino del archivo generado se encuentre en el almacenamiento persistente enlazado a la aplicación. Por ejemplo, puede usar un JSON similar al ejemplo siguiente al crear el almacenamiento persistente en 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, puede usar el siguiente comando para anexar al almacenamiento 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>

Pasos siguientes