הגדרת מגבלות זיכרון

איך מגדירים מגבלות לזיכרון שבו נעשה שימוש במכונות שלכם ב-Knative serving.

הסבר על שימוש בזיכרון

אם מופעלות יותר מדי יחידות של קונטיינר ב-Knative Serving, הן מופסקות.

הפריטים הבאים נכללים בזיכרון הזמין של מופע הקונטיינר:

  • הפעלת קובץ ההפעלה של האפליקציה (כי קובץ ההפעלה צריך להיטען לזיכרון)
  • הקצאת זיכרון בתהליך הבקשה
  • כתיבת קבצים למערכת הקבצים

גודל קובץ האימג' של הקונטיינר שנפרס לא נספר בזיכרון הזמין.

כמות הזיכרון המקסימלית

כמות הזיכרון המקסימלית שאפשר להגדיר מוגבלת על ידי ההגדרה של אשכול GKE.

אופטימיזציה של הזיכרון

כדי לקבוע את דרישת הזיכרון המקסימלית לשירות, משתמשים בנוסחה הבאה: (זיכרון קבוע) + (זיכרון לכל בקשה) * (מקבילות השירות)

לכן,

  • אם מגדילים את מספר הבקשות המקבילות בשירות, צריך גם להגדיל את מגבלת הזיכרון כדי להתחשב בשימוש בשיא.

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

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

הגדרה ועדכון של מגבלות זיכרון

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

אפשר להגדיר מגבלות זיכרון באמצעות מסוף Google Cloud,‏ Google Cloud CLI או קובץ YAML כשפורסים שירות חדש או מעדכנים שירות קיים ופורסים עדכון: Google Cloud

המסוף

  1. נכנסים אל Knative serving במסוף Google Cloud :

    מעבר אל Knative serving

  2. אם אתם מגדירים שירות חדש שאתם פורסים, לוחצים על יצירת שירות. אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על Edit & Deploy New Revision (עריכה ופריסה של עדכון חדש).

  3. בקטע הגדרות מתקדמות, לוחצים על מאגר תגים.

  4. בוחרים את גודל הזיכרון הרצוי מהתפריט הנפתח הזיכרון שהוקצה.

  5. לוחצים על הבא כדי להמשיך לקטע הבא.

  6. בקטע Configure how this service is triggered (הגדרה של אופן הפעלת השירות), בוחרים את סוג הקישוריות שרוצים להשתמש בו כדי להפעיל את השירות.

  7. לוחצים על יצירה כדי לפרוס את התמונה ב-Knative serving ומחכים עד שהפריסה תסתיים.

שורת הפקודה

  • בשירותים קיימים, כדי לעדכן את מגבלת הזיכרון מריצים את הפקודה gcloud run services update עם הפרמטר --memory:

    gcloud run services update SERVICE --memory SIZE

    מחליפים את:

    • SERVICE בשם של השירות.
    • SIZE עם גודל הזיכרון הרצוי. הפורמט של מאפיין הגודל הוא מספר קבוע או מספר עם נקודה עשרונית, שאחריו יחידה: G, M או K, שמתאימות לגיגה-בייט, מגה-בייט או קילו-בייט, בהתאמה. אפשר גם להשתמש בערכים שמתאימים לחזקות של 2: ‏ Gi, Mi או Ki, שמתאימים לגיבי-בייט, מבי-בייט או קיבי-בייט, בהתאמה.
  • בשירותים חדשים, מגדירים את מגבלת הזיכרון על ידי הפעלת הפקודה gcloud run deploy עם הפרמטר --memory:

    gcloud run deploy SERVICE --image=IMAGE_URL --memory SIZE

    מחליפים את:

    • SERVICE בשם של השירות.
    • IMAGE_URL עם הפניה לקובץ אימג' של קונטיינר, לדוגמה, gcr.io/cloudrun/hello.
    • SIZE עם גודל הזיכרון הרצוי. הפורמט של מאפיין הגודל הוא מספר קבוע או מספר עם נקודה עשרונית, שאחריו יחידה: G, M או K, שמתאימות לגיגה-בייט, מגה-בייט או קילו-בייט, בהתאמה. אפשר גם להשתמש בערכים שמתאימים לחזקות של 2: ‏ Gi, Mi או Ki, שמתאימים לגיבי-בייט, מבי-בייט או קיבי-בייט, בהתאמה.

YAML

אפשר להוריד את ההגדרה של שירות קיים לקובץ YAML באמצעות הפקודה gcloud run services describe והדגל --format=export. אחר כך תוכלו לשנות את קובץ ה-YAML ולפרוס את השינויים האלה באמצעות הפקודה gcloud run services replace. חשוב לוודא שמשנים רק את המאפיינים שצוינו.

  1. מורידים את ההגדרה של השירות לקובץ בשם service.yaml בסביבת העבודה המקומית:

    gcloud run services describe SERVICE --format export > service.yaml

    מחליפים את SERVICE בשם של שירות Knative serving.

  2. מעדכנים את המאפיין memory בקובץ המקומי:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE_NAME
    spec:
      template:
        spec:
          containers:
    image: IMAGE_URL
            resources:
              limits:
                memory: SIZE

    מחליפים את SIZE בגודל הזיכרון הרצוי. הפורמט הוא מספר נקודה קבועה או מספר נקודה צפה, ואחריו יחידה: ‫G,‏ M או K, שמתאימים לגיגה-בייט, מגה-בייט או קילו-בייט, בהתאמה, או שאפשר להשתמש בערכים שווי-הערך של חזקות של 2: ‏ Gi,‏ Mi או Ki, שמתאימים לגיבי-בייט, מבי-בייט או קיבי-בייט, בהתאמה.

  3. מחליפים את השירות בהגדרה החדשה שלו באמצעות הפקודה הבאה:

    gcloud run services replace service.yaml