במדריך הזה מתוארות אופטימיזציות לשירותי Cloud Run שנכתבו ב-JavaScript או ב-TypeScript, ופועלים בסביבת זמן הריצה של Node.js. המידע בדף הזה הוא בנוסף לטיפים כלליים לפיתוח, שרלוונטיים גם ל-Node.js.
אופטימיזציה של זמן ההפעלה
אופטימיזציה של זמן ההפעלה יכולה להפחית את זמן האחזור, לשפר את מהירות התגובה ולהשיג אופטימיזציה יעילה של העלויות. בקטע הזה מתוארות דרכים שונות לאופטימיזציה של זמן ההפעלה.
הפעלת האפליקציה באמצעות node במקום npm
כדי להפעיל את האפליקציה ישירות, צריך להשתמש ב-node index.js במקום ב-npm start, כי npm מוסיף זמן אחזור.
כדי להתחיל את השימוש באפליקציה עם node index.js, אפשר לפעול באחת מהשיטות הבאות:
משתמשים ב-
CMD node index.jsבקובץ Dockerfile, לדוגמה:CMD node index.jsהגדרת
node index.jsכנקודת הכניסה. מריצים את הפקודה הבאה באמצעות Google Cloud CLI:gcloud run deploy SERVICE --command "node index.js"מידע נוסף על אפשרויות להגדרת נקודות כניסה זמין במאמר הגדרת קונטיינרים לשירותים.
אם אתם משתמשים בפריסות מקוד מקור ללא Dockerfile, Cloud Run מבצע את האופטימיזציה.
חבילת הקוד
חבילת קבצים היא כלי בנייה שמבצע אופטימיזציה של הפריסה של קובצי המקור של JavaScript כדי לקצר את זמני הטעינה. חלק מהאופטימיזציות הנפוצות של חבילות כוללות tree shaking, מזעור ואיחוד של קבצים קטנים. חבילות מפחיתות באופן משמעותי את הגודל הכולל של החבילה ואת מספר בקשות הקריאה של הקבצים. חלק מהכלים הנפוצים ליצירת חבילות JavaScript הם esbuild, webpack ו-rollup.
טעינה מדורגת של פניות קשורות
בזמן ההפעלה, Cloud Run מזרימה כל קובץ שהקוד טוען ממיקום מרוחק. בהשוואה למערכת קבצים מקומית, שימוש במיקום מרוחק מוביל לזמן אחזור נוסף בכל פעם שקוראים קובץ. יכול להיות שחבילות Node.js ישתמשו בהרבה קבצים עם יחסי תלות עקיפים. במקום לייבא את כל התלויות בהפעלה, מומלץ לטעון רק את התלויות שנדרשות להפעלת השרת, ולטעון את שאר התלויות באמצעות ייבוא דינמי.
לדוגמה, במקום להשתמש בייבוא בחלק העליון של המודול, כמו import { Storage } from '@google-cloud/storage', משתמשים ב-import() בפונקציה כשנדרש האובייקט המיובא, למשל:
const { Storage } = await import('@google-cloud/storage');
כדי לזהות את המודולים שנפרסים במהלך ההפעלה ואת הזמן שלוקח לכל מודול להיפרס במחשב, מריצים את הפקודה הבאה:
node --trace-event-categories node.module_timer --trace-event-file-pattern 'trace-events.log' index.js
הגדרת הזמן הקצוב לתפוגה
לשרת ה-HTTP המובנה ב-Node.js יש זמן קצוב לתפוגה שמוגדר כברירת מחדל של שתי דקות. אם פסק הזמן לתפוגת הבקשה בשירות Cloud Run ארוך יותר, צריך לשנות את פסק הזמן לתפוגה באמצעות server.setTimeout(msecs). צריך גם לשנות את הגדרת הזמן הקצוב לתפוגה (timeout) למסגרות שנבנו על שרת Node.js, כמו Express. כדי להשיג זמן קצוב לתפוגה ללא הגבלה ב-Node.js ולהסתמך על זמן קצוב לתפוגה המובנה של Cloud Run, משתמשים ב-server.setTimeout(0).