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

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

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

  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, הפוד פועל כבר 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 מהקטע container בתבנית spec שהוספתם קודם.args

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