הגדרת מספר מופעים מקסימלי (דור ראשון)

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

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

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

הגדרה ומחיקה של מגבלות על מספר המופעים

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

הגדרת מגבלות על מספר המופעים

אפשר להגדיר מכסה מקסימלית של מופעים באמצעות Google Cloud CLI או מסוף Google Cloud . אם לא מציינים מגבלה, פונקציות Cloud Run מגדירות ברירת מחדל של 3,000.

כדי להגדיר מגבלה על מספר המופעים:

המסוף

  1. נכנסים לדף הסקירה הכללית של Cloud Run functions.

  2. לוחצים על יצירת פונקציה.

  3. ממלאים את שדות החובה של הפונקציה.

  4. מרחיבים את הקטע Runtime, build...‎ (זמן ריצה, build...) בסוף הדף ולוחצים על הכרטיסייה Runtime (זמן ריצה).

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

gcloud

כדי להגדיר מגבלה על מספר המכונות, מריצים את הפקודה deploy עם הדגל --max-instances:

gcloud functions deploy FUNCTION_NAME --max-instances MAX_INSTANCE_LIMIT

מחליפים את מה שכתוב בשדות הבאים:

  • FUNCTION_NAME: השם של הפונקציה.

  • MAX_INSTANCE_LIMIT: המספר שרוצים להגדיר כמגבלת המקרים המקסימלית – לדוגמה, 3,000.

מחיקת המגבלות על מספר המופעים המקסימלי

אפשר להסיר את המגבלה על מספר המופעים של פונקציה באמצעות כלי שורת הפקודה gcloudאו באמצעות Google Cloud המסוף.

המסוף

כדי להסיר את המגבלה על מספר המופעים המקסימלי של פונקציה:

  1. נכנסים לדף הסקירה הכללית של Cloud Run functions.

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

  3. לוחצים על Edit.

  4. מרחיבים את הקטע Runtime, build...‎ (זמן ריצה, build...) בסוף הדף ולוחצים על הכרטיסייה Runtime (זמן ריצה).

  5. בשדה Maximum number of instances (מספר המופעים המקסימלי) בקטע Autoscaling (שינוי גודל אוטומטי), מזינים 0.

gcloud

כדי להסיר את המגבלה על מספר המופעים המקסימלי של פונקציה, מריצים את הפקודה deploy עם הדגל --clear-max-instances:

gcloud functions deploy FUNCTION_NAME --no-gen2 --clear-max-instances

מגבלות ושיטות מומלצות

בקטע הזה מפורטות הנחיות לשימוש במספר המקסימלי של מופעים.

בחירת ערך מקסימלי של מופע

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

הגנה מפני הגדלות מוגזמות

אם לא מציינים מגבלה על מספר האירועים המקסימלי, פונקציות Cloud Run מעדיפות הגדלת קנה מידה כדי לעמוד בביקוש על פני הגבלת קצב העברת הנתונים. המשמעות היא שמספר המקרים בו-זמנית שבהם הפונקציה יכולה לפעול הוא למעשה בלתי מוגבל, אלא אם הגדרתם מגבלה כזו.

מומלץ להקצות מגבלת --max-instances לכל פונקציה ששולחת בקשות לשירותים במורד הזרם שמוגבלים ברוחב הפס או שלא ניתן להרחיב אותם בדרך אחרת. הגבלת מספר המופעים משפרת את היציבות הכוללת של המערכת ועוזרת להגן עליה מפני רמות גבוהות באופן חריג של בקשות.

טיפול בבקשות כשכל המופעים עסוקים

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

בתרחיש הזה, פונקציות Cloud Run ינסו לטפל בבקשה נכנסת חדשה למשך עד 30 שניות:

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

בקשות שנשלחות לפונקציות HTTP שעמוסות מדי נכשלות עם קוד תגובה

  • 429 Too Many Requests אם מוגדר ערך מקסימלי של מופעים, או
  • 500 Internal Server Error אם לא מוגדר ערך מקסימלי של מופעים

אירועים שמיועדים לפונקציות מבוססות-אירועים יישמרו אוטומטית עד שיהיה מקום בקיבולת.

מגבלות על מספר מקסימלי של מופעים שחורגות מיכולת ההתאמה של פונקציות Cloud Run

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

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

טיפול בעליות חדות בתנועת הגולשים

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

פריסות

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

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

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

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

מחיקת המגבלות על מספר המופעים המקסימלי

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