ניתוח השימוש בזיכרון הערימה (heap) של אופרטור AlloyDB Omni Kubernetes

בוחרים גרסה של מאמרי העזרה:

במאמר הזה מוסבר איך ליצור תמונת מצב של ערימת הזיכרון של אופרטור AlloyDB Omni, כדי לאבחן ולנפות באגים בבעיות פוטנציאליות בזיכרון. כדי לקבל את ה-heap של הזיכרון לניתוח:

  1. בוחרים את פריסת אופרטור AlloyDB Omni שרוצים לנתח. אופרטור AlloyDB Omni כולל שני פריסות, ואפשר לנתח את ערימת הזיכרון של כל אחת מהן. כדי לזהות את שני הפריסות, מריצים את הפקודה הבאה:

    kubectl get deployment -n alloydb-omni-system

    הפלט מציג את שני הפריסות במרחב השמות alloydb-omni-system:

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

    אפשר לקבל את ערימת הזיכרון של כל אחד מהפריסות. למטרות הדגמה, השלבים האלה מראים איך לקבל את ערמת הזיכרון של הפריסה local-controller-manager.

  2. כדי להפעיל את ניתוח הזיכרון, צריך לציין יציאה זמינה לשימוש. אחרי שמציינים את היציאה, ה-pod מופעל מחדש. כדי לציין יציאה זמינה, משתמשים בארגומנט pprof-address בפריסה:

    1. מריצים את הפקודה הבאה כדי לפתוח את הפריסה בכלי לעריכת טקסט:

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. מציינים את היציאה ב-args של הקטע container בתבנית spec:

      apiVersion: apps/v1
      kind: Deployment
      spec:
        ...
        template:
        ...
          spec:
            containers:
            - args
              - --pprof-address=:PORT
      
    3. שומרים את קובץ הפריסה. אחרי ששומרים את קובץ הפריסה, ה-pod מופעל מחדש.

  3. לפני שממשיכים לשלב הבא, מחכים שה-pod יופעל מחדש.

    כדי לוודא שה-pod הופעל מחדש, מריצים את הפקודה הבאה:

    kubectl get pod -n alloydb-omni-system

    מוודאים שערך הפלט בעמודה STATUS של ה-Pod הוא Running וערך הפלט בעמודה AGE הוא משך זמן קצר. לדוגמה, אם בעמודה STATUS מופיע הערך Running ובעמודה AGE מופיע הערך 50s, ה-pod פועל במשך 50 שניות אחרי ההפעלה מחדש.

  4. מפעילים את העברת היציאות באמצעות הפקודה הבאה:

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

    מחליפים את DEPLOYMENT_POD_NAME בשם של הפריסה, כמו שהוא מופיע בעמודה NAME בפלט של הפקודה הבאה:

    kubectl get pod -n alloydb-omni-system
  5. בטרמינל אחר, מריצים את הפקודה הבאה כדי ליצור קובץ עם תמונת מצב של ערימת הזיכרון של הפריסה:

    curl http://localhost:PORT/debug/pprof/heap > heap.out
  6. שומרים את הקובץ heap.out ומשתמשים בו כדי להציג את ערימת הזיכרון של פריסת אופרטור AlloyDB Omni שבחרתם לנתח.

  7. כדי להשבית את ניתוח הזיכרון, מסירים את הארגומנט pprof-address עם היציאה שבה השתמשתם מהפריסה:

    1. פותחים את הפריסה בכלי לעריכת טקסט:

      kubectl edit -n alloydb-omni-system deploy local-controller-manager
    2. מסירים את השורה של היציאה --pprof-address=:PORT מהקטע args של container בתבנית spec שהוספתם קודם.

המאמרים הבאים