אתם יכולים להשתמש בבקשות חימום כדי לצמצם את זמן האחזור של הבקשות והתשובות בזמן שהקוד של האפליקציה נטען למופע שנוצר לאחרונה.
לפעמים App Engine צריך לטעון את הקוד של האפליקציה למופע חדש. טעינת מופע יכולה לקרות במצבים הבאים:
- כשפורסים מחדש גרסה של האפליקציה.
- כשנוצרים מופעים חדשים בגלל שהעומס מהבקשות חורג מהקיבולת של המערך הנוכחי של המופעים הפועלים.
- כשמתבצעת תחזוקה ותיקונים של התשתית הבסיסית או של החומרה הפיזית.
טעינת הקוד של האפליקציה למופע חדש יכולה לגרום לבקשות טעינה. בקשות טעינה עלולות להגדיל את זמן האחזור של הבקשות עבור המשתמשים, אבל אפשר להימנע מזמן האחזור הזה באמצעות בקשות חימום. בקשות חימום טוענות את הקוד של האפליקציה למופע חדש לפני שבקשות פעילות מגיעות למופע הזה. בקשות לחימום, כמו בקשות אחרות, כפופות לזמן הקצוב לתפוגה של הבקשה.
אם הפעלתם בקשות לחימום מראש של האפליקציה, App Engine ינסה לזהות מתי האפליקציה צריכה מופע חדש, ויפעיל בקשה לחימום מראש כדי לאתחל מופע חדש. עם זאת, ניסיונות הזיהוי האלה לא תמיד מצליחים. כתוצאה מכך, יכול להיות שתיתקלו בבקשות טעינה, גם אם הפעלתם באפליקציה בקשות warmup. לדוגמה, אם האפליקציה לא משרתת תנועה, הבקשה הראשונה לאפליקציה תמיד תהיה בקשת טעינה, ולא בקשת warmup.
בקשות לחימום משתמשות בשעות שימוש במופע, כמו כל בקשה אחרת לאפליקציית App Engine. ברוב המקרים שבהם מופעלות בקשות warmup, לא תבחינו בעלייה בשעות השימוש במופע, כי האפליקציה פשוט עוברת אתחול בבקשת warmup במקום בבקשת טעינה. השימוש בשעות המופע יכול לעלות אם מחליטים לבצע יותר עבודה, כמו שמירה מראש במטמון במהלך בקשת warmup. אם מגדירים את min_idle_instances כערך שגדול מ-0, יכול להיות שתיתקלו בבקשות לחימום מוקדם כשהמופעים האלה יופעלו בפעם הראשונה, אבל הם יישארו זמינים אחרי הזמן הזה.
הפעלת בקשות warmup
בקשות חימום משמשות את מתזמן App Engine, ששולט בהתאמת קנה המידה האוטומטית של מכונות על סמך הגדרה שסופקה על ידי המשתמש. אם הפעלתם בקשות לחימום, App Engine ישלח בקשות מ-GET אל /_ah/warmup. אפשר להטמיע רכיבי handler לבקשה הזו כדי לבצע משימות ספציפיות לאפליקציה, כמו טעינה מראש מהמטמון של נתוני האפליקציה.
מתזמן המשימות מפעיל מכונות וירטואליות כשהוא מזהה שיש צורך בעוד מכונות וירטואליות. יכול להיות שבקשות לחימום יופיעו ביומנים גם אם הן מושבתות, כי המתזמן משתמש בהן כדי להפעיל מופעים.
חשוב לדעת: לא מובטח שהבקשות לחימום יופעלו. במצבים מסוימים, נשלחות בקשות טעינה במקום זאת: למשל, אם המופע הוא הראשון שמופעל, או אם יש עלייה חדה בתנועה. עם זאת, אם הפעלתם בקשות הפעלה, המערכת תנסה לשלוח בקשות למופעים שכבר הופעלו.
כדי להפעיל בקשות חימום, מוסיפים את הרכיב warmup להנחיה inbound_services בקובץ app.yaml, לדוגמה:
inbound_services:
- warmup
יצירת ה-handler
יוצרים handler שיעבד את הבקשות שנשלחות אל /_ah/warmup.
ה-handler צריך לבצע את כל הלוגיקה של ההפעלה הראשונית שנדרשת לאפליקציה.
שימו לב: בקשת warmup שמוגדרת כברירת מחדל גורמת ליצירת אינדקס לכל קובצי ה-JAR בזיכרון, ומאתחלת את האפליקציה והמסננים.