Cómo analizar el uso del montón de memoria del operador de Kubernetes de AlloyDB Omni

Selecciona una versión de la documentación:

En este documento, se describe cómo puedes obtener una instantánea del heap de memoria del operador de AlloyDB Omni para diagnosticar y depurar posibles problemas de memoria. Sigue estos pasos para obtener un montón de memoria para el análisis:

  1. Determina qué implementación del operador de AlloyDB Omni se analizará. El operador de AlloyDB Omni incluye dos implementaciones, y puedes analizar el montón de memoria de cualquiera de ellas. Para identificar las dos implementaciones, ejecuta el siguiente comando:

    kubectl get deployment -n alloydb-omni-system

    El resultado muestra las dos implementaciones en el espacio de nombres alloydb-omni-system:

    • fleet-controller-manager
    • local-controller-manager

    Puedes obtener el heap de memoria de cualquiera de las implementaciones. A modo de demostración, estos pasos muestran cómo obtener el heap de memoria para la implementación de local-controller-manager.

  2. Para activar el análisis de memoria, especifica un puerto disponible para usar. Después de especificar el puerto, se reinicia el Pod. Para especificar un puerto disponible, usa el argumento pprof-address en la implementación:

    1. Ejecuta el siguiente comando para abrir la implementación en un editor de texto:

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. Especifica el puerto en el args de la sección container en la plantilla spec:

      apiVersion: apps/v1
      kind: Deployment
      spec:
        ...
        template:
        ...
          spec:
            containers:
            - args
              - --pprof-address=:PORT
      
    3. Guarda el archivo de implementación. Después de guardar el archivo de implementación, se reinicia el pod.

  3. Espera a que se reinicie el pod antes de continuar con el siguiente paso.

    Para asegurarte de que el pod se reinició, ejecuta el siguiente comando:

    kubectl get pod -n alloydb-omni-system

    Verifica que el valor de salida en la columna STATUS del pod sea Running y que el valor de salida en su columna AGE sea una duración corta. Por ejemplo, si la columna STATUS es Running y el valor de la columna AGE es 50s, el pod se ejecutó durante 50 segundos después del reinicio.

  4. Activa la redirección de puertos con el siguiente comando:

    kubectl port-forward -n alloydb-omni-system DEPLOYMENT_POD_NAME PORT:PORT

    Reemplaza DEPLOYMENT_POD_NAME por el nombre de tu implementación tal como aparece en la columna NAME del resultado del siguiente comando:

    kubectl get pod -n alloydb-omni-system
  5. En otra terminal, ejecuta el siguiente comando para crear un archivo con una instantánea del montón de memoria de la implementación:

    curl http://localhost:PORT/debug/pprof/heap > heap.out
  6. Guarda el archivo heap.out y úsalo para ver el heap de memoria de la implementación del operador de AlloyDB Omni que elegiste analizar.

  7. Para desactivar el análisis de memoria, quita el argumento pprof-address con el puerto que usaste de la implementación:

    1. Abre la implementación en un editor de texto:

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. Quita la línea del puerto --pprof-address=:PORT de args de la sección container en la plantilla spec que agregaste antes.

¿Qué sigue?