אתם יכולים לבחור את כמות הזיכרון שמוקצה לשירות Cloud Run. בדף הזה מוסבר איך מציינים את כמות הזיכרון שזמינה לשירות.
הסבר על השימוש בזיכרון
מכונות של Cloud Run שחורגות ממגבלת הזיכרון המותרת שלהן מופסקות.
הזיכרון שזמין למופע צריך להיות מספיק בשביל:
- הפעלת קובץ ההפעלה של השירות, כי צריך לטעון את קובץ ההפעלה לזיכרון
- הקצאת זיכרון בתהליך השירות
- כתיבת קבצים למערכת הקבצים
גודל קובץ אימג' של קונטיינר הפריסה לא משפיע על הזיכרון שזמין למכונה.
הגדרה ועדכון של מגבלות זיכרון
אפשר להגדיר מגבלות זיכרון בשירותי Cloud Run. כברירת מחדל, הזיכרון שמוקצה לכל מופע של עדכון הוא 512 MiB, והזיכרון שמוקצה לפונקציה הוא 256 MiB.
הזיכרון הנדרש כשמגדירים ערך של מעבד
כשמגדירים ערך של מעבד, נדרש הזיכרון הבא:
| מעבדים (CPU) | הזיכרון הנדרש |
|---|---|
| .08 vCPU | עד 512 MiB |
| 0.5 vCPU | עד 1 GiB |
| 1 vCPU | עד 4GiB |
| 2 vCPU | עד 8GiB |
| 4 vCPU | 2GiB עד 16GiB |
| 6 vCPU | 4 עד 24GiB |
| 8 vCPU | 4 עד 32 GiB |
כמות הזיכרון המקסימלית
הכמות המקסימלית של הזיכרון שאפשר להגדיר היא 32 גיביבייט (32 Gi).
זיכרון מינימלי
הגדרת הזיכרון המינימלית משתנה בהתאם לסביבת ההפעלה שבה אתם משתמשים: דור ראשון או דור שני:
- 128MiB לדור הראשון
- 512 MiB לדור השני
שיקולי עלות
העלות של שירות Cloud Run מושפעת, בין היתר, מהגדרת הזיכרון ומהמשך הפעילות של המשאב. הקצאת יתר של משאבים עלולה להגדיל את העלויות. כדי להחליט איזו הגדרת זיכרון הכי מתאימה למשאב:
- קביעת הגדרות בסיסיות ראשוניות.
- כדאי לעקוב אחרי מדדי ניצול הזיכרון ב-Cloud Monitoring בזמן בדיקת המערכת בעומס.
- משנים את ההגדרות לפי הצורך.
אם השימוש בזיכרון נמוך באופן עקבי, כדאי להקטין את הזיכרון שהוקצה. אם זמן האחזור גבוה וניצול הזיכרון קרוב ל-100%, כדאי להגדיל את הזיכרון שהוקצה. אם אתם נתקלים בשגיאות של חוסר זיכרון (OOM), אתם צריכים להגדיל את הזיכרון שהוקצה או לשנות את האפליקציה כדי למנוע דליפות זיכרון ולהשתמש בפחות זיכרון. כדי להבין טוב יותר את השימוש בזיכרון, אפשר לעיין בלוח הבקרה של Cloud Monitoring.
למידע נוסף, אפשר לעיין בתמחור של Cloud Run או להשתמש במחשבון התמחור כדי להעריך את העלויות.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להגדרה ולפריסה של שירותי Cloud Run, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- Cloud Run Developer (
roles/run.developer) בשירות Cloud Run - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בזהות השירות
אם אתם פורסים שירות או פונקציה מקוד מקור, אתם צריכים גם לקבל תפקידים נוספים בפרויקט ובחשבון השירות של Cloud Build.
רשימת ההרשאות והתפקידים ב-IAM שמשויכים ל-Cloud Run מופיעה במאמרים תפקידי IAM ב-Cloud Run והרשאות IAM ב-Cloud Run. אם שירות Cloud Run שלכם מתקשר עםGoogle Cloud ממשקי API, כמו ספריות לקוח ב-Cloud, כדאי לעיין במדריך להגדרת זהות שירות. מידע נוסף על מתן תפקידים זמין במאמרים הרשאות פריסה וניהול גישה.
הגדרת מגבלות זיכרון
כל שינוי בהגדרות מוביל ליצירה של גרסה חדשה. גם גרסאות מתוקנות עתידיות יקבלו את הגדרת התצורה הזו באופן אוטומטי, אלא אם תבצעו עדכונים מפורשים כדי לשנות אותה.
בשירותי Cloud Run, אפשר להגדיר מגבלות זיכרון באמצעות מסוף Cloud, שורת הפקודה gcloud או קובץ YAML כשיוצרים שירות חדש או פורסים עדכון חדש: Google Cloud
המסוף
נכנסים ל-Cloud Run במסוף Google Cloud :
בתפריט הניווט של Cloud Run, בוחרים באפשרות Services (שירותים) ולוחצים על Deploy container (פריסת קונטיינר) כדי להגדיר שירות חדש. אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על עריכה ופריסה של עדכון חדש.
אם אתם מגדירים שירות חדש, ממלאים את דף ההגדרות הראשוניות של השירות ואז לוחצים על Containers, Networking, Security (מאגרי נתונים, רשתות, אבטחה) כדי להרחיב את דף הגדרות השירות.
לוחצים על הכרטיסייה מאגר תגים.
- בתפריט הנפתח זיכרון, בוחרים את גודל הזיכרון הרצוי.
לוחצים על יצירה או על פריסה.
gcloud
אפשר לעדכן את הקצאת הזיכרון של שירות מסוים באמצעות הפקודה הבאה:
gcloud run services update SERVICE --memory SIZE
מחליפים את SERVICE בשם השירות ואת SIZE בגודל הזיכרון הרצוי. הפורמט של הגודל הוא מספר קבוע או מספר עם נקודה עשרונית, שאחריו יחידה: G או M, שמתאימות לגיגה-בייט או למגה-בייט בהתאמה, או שמשתמשים בערכים המקבילים של חזקות של 2: Gi או Mi, שמתאימות לגיבי-בייט או למבי-בייט בהתאמה.
אפשר גם להגדיר מגבלות זיכרון במהלך הפריסה באמצעות הפקודה:
gcloud run deploy --image IMAGE_URL --memory SIZE
מחליפים את מה שכתוב בשדות הבאים:
- IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - SIZE: הערכים שמתוארים למעלה.
YAML
אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, אתם צריכים להוריד את הגדרות ה-YAML שלו:
gcloud run services describe SERVICE --format export > service.yaml
מעדכנים את המאפיין
memory:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: name: REVISION spec: containers: - image: IMAGE resources: limits: memory: SIZE
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- IMAGE_URL: הפניה לקובץ אימג' של קונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - SIZE: נפח הזיכרון הנדרש.
הפורמט הוא מספר נקודה צפה או מספר קבוע, ואחריו יחידה:
GאוMשמתאימים לגיגה-בייט או למגה-בייט, בהתאמה, או שמשתמשים בערכים המקבילים בחזקת 2: GiאוMiשמתאימים לגיבי-בייט או למבי-בייט, בהתאמה. - REVISION עם שם חדש לגרסה או למחוק אותה (אם היא קיימת). אם מספקים שם חדש לגרסה, חובה שהוא יעמוד בקריטריונים הבאים:
- מתחיל ב-
SERVICE- - מכיל רק אותיות קטנות, מספרים ו
- - לא מסתיים ב-
- - לא חורג מ-63 תווים
- מתחיל ב-
יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
מוסיפים את השורות הבאות למשאבgoogle_cloud_run_v2_service בתצורת Terraform:בקטע template.containers.resources.limits, מחליפים את 512Mi במגבלת הזיכרון הנדרשת של השירות.
פיתוח נייטיב
כדי לציין רמזים לגבי המעבד והזיכרון בקובץ compose.yaml, מוסיפים את המאפיין cpus להגדרת השירות. Cloud Run מקצה באופן אוטומטי את הזיכרון הנדרש כשמגדירים ערך של מעבד.
services: web: image: IMAGE cpus: CPU_VALUE
מחליפים את מה שכתוב בשדות הבאים:
- IMAGE: כתובת ה-URL של תמונת המאגר.
- CPU_VALUE: מגבלת ה-CPU הנדרשת, לדוגמה
2. הערך הזה קובע את הזיכרון הנדרש.
פריסת השירותים
כדי לפרוס את השירותים, מריצים את הפקודה
gcloud run compose up:gcloud run compose up compose.yamlמגיבים
yלכל ההנחיות להתקנת רכיבים נדרשים או להפעלת ממשקי API.אופציונלי: הפיכת השירות לציבורי אם רוצים לאפשר גישה לשירות ללא אימות.
אחרי הפריסה, מוצגת כתובת ה-URL של שירות Cloud Run. מעתיקים את כתובת ה-URL הזו ומדביקים אותה בדפדפן כדי לראות את הקונטיינר הפועל. אפשר להשבית את אימות ברירת המחדל במסוף Google Cloud .
אופטימיזציה של הזיכרון לשירותים
בשביל שירות של Cloud Run, אפשר לקבוע את דרישת הזיכרון המקסימלית של שירות באמצעות הנוסחה הבאה: (זיכרון קבוע) + (זיכרון לכל בקשה) * (מקבילות של השירות)
לכן,
אם מגדילים את מספר הבקשות המקבילות בשירות, צריך גם להגדיל את מגבלת הזיכרון כדי להתחשב בשימוש בשיא.
אם מקטינים את רמת המקביליות של השירות, כדאי להקטין את מגבלת הזיכרון כדי לחסוך בעלויות של השימוש בזיכרון.
במאמר הזה מפורטים טיפים לפיתוח בנושא משתנים גלובליים, שיעזרו לכם לצמצם את השימוש בזיכרון לכל בקשה.
הצגת הגדרות של מגבלת הזיכרון
כדי לראות את הגדרות מגבלת הזיכרון הנוכחיות בשירות Cloud Run:
המסוף
נכנסים לדף Services של Cloud Run במסוף Google Cloud :
לוחצים על השירות שרוצים לראות כדי לפתוח את הדף פרטי השירות.
לוחצים על הכרטיסייה עדכונים.
בחלונית הפרטים שמשמאל, הגדרת מגבלת הזיכרון מופיעה בכרטיסייה Container.
gcloud
משתמשים בפקודה הבאה:
gcloud run services describe SERVICE
מאוד קל לאתר את הגדרת מגבלת הזיכרון בהגדרה שמוחזרת.