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

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

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

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

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

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

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

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

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

המסוף

  1. עוברים אל דף הסקירה הכללית של פונקציות Cloud Run.

  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.

  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 כמספר המקסימלי של מופעים לפונקציה מוחקת את המגבלה הקיימת על מספר המופעים המקסימלי של הפונקציה, אבל לא משהה את הפונקציה.