Analizar el uso del montículo de memoria del operador de AlloyDB Omni de Kubernetes

Selecciona una versión de la documentación:

En este documento se describe cómo puedes obtener una instantánea del montículo de memoria del operador de AlloyDB Omni para diagnosticar y depurar posibles problemas de memoria. Sigue estos pasos para obtener un montículo de memoria para analizarlo:

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

    kubectl get deployment -n alloydb-omni-system

    En la salida se muestran las dos implementaciones del espacio de nombres alloydb-omni-system:

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

    Puedes obtener el montículo de memoria de cualquiera de las dos implementaciones. Para hacer una demostración, estos pasos muestran cómo obtener el montículo de memoria de la implementación de local-controller-manager.

  2. Activa el análisis de memoria especificando un puerto disponible. Una vez que se haya especificado el puerto, el pod se reiniciará. Para especificar un puerto disponible, usa el argumento pprof-address en la implementación:

    1. Abre la implementación en un editor de texto ejecutando el siguiente comando:

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. Especifica el puerto en el args de la sección container de 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, el pod se reinicia.

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

    Para asegurarte de que el pod se ha reiniciado, ejecuta el siguiente comando:

    kubectl get pod -n alloydb-omni-system

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

  4. Activa el reenvío de puertos con el siguiente comando:

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

    Sustituye 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 otro terminal, ejecuta el siguiente comando para crear un archivo con una instantánea del montículo de memoria del despliegue:

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

  7. Para desactivar el análisis de memoria, elimina el argumento pprof-address con el puerto que has usado 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. Elimina la línea del puerto --pprof-address=:PORT de args de la sección container de la plantilla spec que has añadido anteriormente.

Siguientes pasos