Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)
בדף הזה מוסבר איך להתאים את פרמטרי הביצועים וההיקף של הסביבה לצרכים של הפרויקט, כדי לשפר את הביצועים ולהפחית את העלויות של משאבים שלא נעשה בהם שימוש בסביבה.
- מידע על שינוי הגודל של הסביבות זמין במאמר שינוי הגודל של הסביבות.
- מידע על שינוי גודל הסביבה זמין במאמר מידע על שינוי גודל הסביבה.
- הדרכה בנושא מעקב אחרי מדדים מרכזיים של הסביבה זמינה במאמר מעקב אחרי תקינות הסביבה והביצועים שלה באמצעות מדדים מרכזיים.
מידע על תהליך האופטימיזציה
שינויים בפרמטרים של הסביבה יכולים להשפיע על היבטים רבים בביצועים שלה. מומלץ לבצע אופטימיזציה של הסביבה שלכם באיטרציות:
- מתחילים עם הגדרות קבועות מראש של סביבה.
- מריצים את ה-DAG.
- מעקב אחרי ביצועי הסביבה.
- משנים את הפרמטרים של הביצועים וההיקף של הסביבה, ואז חוזרים על השלב הקודם.
התחלה עם הגדרות קבועות מראש של סביבה
כשיוצרים סביבה ב- Google Cloud console, אפשר לבחור אחת מההגדרות הקבועות מראש של הסביבה. ההגדרות הקבועות מראש האלה קובעות את ההגדרה הראשונית של קנה המידה והביצועים של הסביבה. אחרי שיוצרים את הסביבה, אפשר לשנות את כל הפרמטרים של קנה המידה והביצועים שמוגדרים מראש.
מומלץ להתחיל עם אחת מההגדרות הקבועות מראש, על סמך ההערכות הבאות:
- המספר הכולל של DAG שתכננתם לפרוס בסביבה
- מספר מקסימלי של הפעלות DAG בו-זמניות
- מספר מקסימלי של משימות בו-זמניות
הביצועים של הסביבה תלויים בהטמעה של DAG ספציפיים שמופעלים בסביבה. בטבלה הבאה מפורטים אומדנים שמבוססים על צריכת המשאבים הממוצעת. אם אתם צופים שגרפי ה-DAG יצרכו יותר משאבים, כדאי להתאים את האומדנים בהתאם.
| הגדרה קבועה מראש מומלצת | סך כל תרשימי ה-DAG | מספר מקסימלי של הפעלות DAG בו-זמניות | מספר מקסימלי של משימות בו-זמניות |
|---|---|---|---|
| קטן | 50 | 15 | 18 |
| בינוני | 250 | 60 | 100 |
| גדול | 1000 | 250 | 400 |
לדוגמה, סביבה צריכה להריץ 40 קובצי DAG. כל ה-DAGs צריכים לפעול באותו הזמן, וכל אחד מהם צריך לכלול משימה פעילה אחת. במקרה כזה, הסביבה תשתמש בהגדרה קבועה מראש של Medium, כי המספר המקסימלי של הרצות DAG מקבילות ומשימות חורג מהאומדנים המומלצים להגדרה קבועה מראש של Small.
הפעלת תרשימי DAG
אחרי שיוצרים את הסביבה, מעלים אליה את קובצי ה-DAG. מריצים את ה-DAG וצופים בביצועים של הסביבה.
מומלץ להריץ את ה-DAGs לפי לוח זמנים שמשקף את השימוש ב-DAGs במציאות. לדוגמה, אם רוצים להפעיל כמה DAG בו-זמנית, צריך לבדוק את ביצועי הסביבה כשכל ה-DAG האלה פועלים בו-זמנית.
מעקב אחר ביצועי הסביבה
בקטע הזה נתמקד בהיבטים הנפוצים ביותר של קיבולת וביצועים ב-Managed Airflow. מומלץ לפעול לפי השלבים במדריך הזה, כי קודם כל מוסבר על השיקולים הנפוצים ביותר שמשפיעים על הביצועים.
מעבר ללוח הבקרה של Monitoring
אפשר לעקוב אחרי מדדי הביצועים של הסביבה בלוח הבקרה של המעקב של הסביבה.
כדי לעבור אל לוח הבקרה של המעקב בסביבה שלכם:
נכנסים לדף Environments במסוף Google Cloud .
לוחצים על שם הסביבה.
עוברים לכרטיסייה מעקב.
מעקב אחרי מדדי המעבד (CPU) והזיכרון של מתזמן המשימות
מדדי ה-CPU והזיכרון של מתזמן Airflow עוזרים לכם לבדוק אם הביצועים של המתזמן הם צוואר בקבוק בביצועים הכוללים של Airflow.
במרכז השליטה Monitoring, בקטע Schedulers, אפשר לראות את הגרפים של מתזמני Airflow בסביבה שלכם:
- סה"כ שימוש במעבד של מתזמני המשימות
- סך השימוש בזיכרון של מתזמני הפעולות
משנים בהתאם לתצפיות:
אם השימוש במעבד של מתזמן הפגישות נמוך באופן עקבי מ-30% עד 35%, כדאי:
אם השימוש במעבד של מתזמן המשימות חורג מ-80% למשך יותר מכמה אחוזים מסך הזמן, כדאי:
מעקב אחרי זמן הניתוח הכולל של כל קובצי ה-DAG
מערכות לתזמון משימות מנתחות DAG לפני שהן מתזמנות הפעלות של DAG. אם ניתוח ה-DAGs נמשך זמן רב, הדבר צורך את הקיבולת של Scheduler ועלול להפחית את הביצועים של הרצות ה-DAG.
בקטע DAG Statistics (נתונים סטטיסטיים של DAG) בלוח הבקרה Monitoring (מעקב), בוחנים את הגרפים של זמן הניתוח הכולל של DAG.
אם המספר הזה גבוה מ-10 שניות בערך, יכול להיות שהמתזמנים עמוסים מדי בניתוח של DAG ולא יכולים להריץ DAG בצורה יעילה. תדירות ברירת המחדל של ניתוח DAG ב-Airflow היא 30 שניות. אם זמן הניתוח של DAG חורג מהסף הזה, מחזורי הניתוח מתחילים לחפוף, מה שגורם לניצול מלא של קיבולת המתזמן.
בהתאם לתצפיות שלכם, יכול להיות שתרצו:
- לפשט את ה-DAG, כולל יחסי התלות שלו ב-Python.
הגדלת מרווח הזמן של ניתוח קובץ ה-DAG והגדלת מרווח הזמן של רישום ספריית ה-DAG.
מעקב אחרי הוצאות של פודים של worker
הוצאה של Pod יכולה לקרות כש-Pod מסוים באשכול של הסביבה מגיע למגבלות המשאבים שלו.
אם פוד של Airflow worker מפונה, כל מופעי המשימות שפועלים בפוד הזה מופסקים, ומאוחר יותר מסומנים ככאלה שנכשלו על ידי Airflow.
רוב הבעיות שקשורות להוצאה של פודים של עובדים מתרחשות בגלל מצבים של חוסר זיכרון בעובדים.
בקטע Workers בלוח הבקרה Monitoring, בודקים את התרשימים Worker Pods evictions בסביבה שלכם.
בתרשים Total workers memory usage מוצגת תמונה כוללת של הסביבה. יכול להיות שעובד יחיד עדיין יחרוג ממגבלת הזיכרון, גם אם ניצול הזיכרון תקין ברמת הסביבה.
בהתאם לתצפיות שלכם, יכול להיות שתרצו:
- הגדלת הזיכרון שזמין לעובדים.
- צמצום מספר העובדים שפועלים בו-זמנית. כך, כל עובד מטפל בפחות משימות בו-זמנית. כך כל משימה מקבלת יותר זיכרון או נפח אחסון. אם משנים את מספר העובדים המקסימלי, כדאי גם להגדיל את מספר העובדים המקסימלי. כך, מספר המשימות שהסביבה יכולה לטפל בהן בו-זמנית נשאר זהה. לדוגמה, אם מקטינים את מספר העובדים המקבילים מ-12 ל-6, כדאי להכפיל את המספר המקסימלי של העובדים.
מעקב אחרי עובדים פעילים
מספר העובדים בסביבה שלכם משתנה באופן אוטומטי בהתאם למספר המשימות בתור.
במרכז הבקרה 'מעקב', בקטע Workers, אפשר לראות גרפים של מספר העובדים הפעילים ומספר המשימות בתור:
- עובדים פעילים
- משימות ב-Airflow
משנים בהתאם לתצפיות:
- אם הסביבה מגיעה לעיתים קרובות למגבלה המקסימלית של העובדים, ובמקביל מספר המשימות בתור של Celery גבוה באופן רציף, כדאי להגדיל את המספר המקסימלי של העובדים.
אם יש עיכובים ארוכים בתזמון בין משימות, אבל באותו הזמן הסביבה לא מתרחבת למספר המקסימלי של העובדים, כנראה שיש הגדרת Airflow שמגבילה את הביצוע ומונעת ממנגנוני Managed Airflow להרחיב את הסביבה. מכיוון שסביבות Airflow מנוהלות משנות את הגודל שלהן בהתאם למספר המשימות בתור של Celery, צריך להגדיר את Airflow כך שלא יגביל את המשימות בדרך לתור:
- הגדלת מספר העובדים שיכולים לעבוד בו-זמנית. הערך של worker_concurrency צריך להיות גבוה ממספר המשימות המקסימלי הצפוי שיופעלו בו-זמנית, חלקי מספר העובדים המקסימלי בסביבה.
- הגדלת בו-זמניות (concurrency) של DAG, אם DAG יחיד מריץ מספר גדול של משימות במקביל, מה שעלול להוביל להגעה למספר המקסימלי של מופעי משימות שפועלים לכל DAG.
- הגדלת מספר ההרצות הפעילות המקסימלי לכל DAG, אם מריצים את אותו DAG כמה פעמים במקביל, מה שעלול לגרום להגבלת קצב ההעברה ב-Airflow כי הושגה המגבלה של מספר ההרצות הפעילות המקסימלי לכל DAG.
מעקב אחר השימוש במעבד (CPU) ובזיכרון של העובדים
כדי לבדוק אם תהליכי העבודה של Airflow משתמשים במשאבים של הסביבה שלכם בצורה נכונה, אתם יכולים לעקוב אחרי השימוש הכולל במעבד ובשימוש בזיכרון שמצטבר בכל תהליכי העבודה בסביבה שלכם.
בלוח הבקרה Monitoring, בקטע Workers, אפשר לראות תרשימים של השימוש במעבד ובזיכרון על ידי עובדי Airflow:
- סה"כ השימוש במעבד על ידי העובדים
- סך השימוש בזיכרון של העובדים
התרשים הזה מייצג את השימוש המצטבר במשאבים. יכול להיות שעובדים מסוימים עדיין יגיעו למגבלות הקיבולת שלהם, גם אם בתצוגה המצטברת מוצגת קיבולת פנויה.
משנים בהתאם לתצפיות:
- אם השימוש בזיכרון של העובדים מתקרב למגבלה, יכול להיות שפודים של עובדים יסולקו. כדי לפתור את הבעיה, צריך להגדיל את הזיכרון של העובד.
- אם השימוש בזיכרון מינימלי בהשוואה למגבלה, ואין פינויים של worker pod, כדאי להקטין את הזיכרון של העובדים.
אם השימוש ביחידת העיבוד המרכזית (CPU) של העובדים מתקרב למגבלה (חורג מ-80% במשך יותר מכמה אחוזים מזמן הפעולה הכולל), כדאי:
- הגדלת מספר העובדים. כך הסביבה שלכם מקבלת יותר שליטה על הקיבולת שהוקצתה לעומס עבודה מסוים.
- הגדלת ה-CPU של העובדים או הקטנת מספר העובדים בו-זמנית, אם משימות מסוימות צריכות הקצאה גבוהה יותר של CPU. אחרת, מומלץ להגדיל את מספר העובדים.
מעקב אחרי משימות שפועלות ומשימות בתור
אתם יכולים לעקוב אחרי מספר המשימות שנמצאות בתור ומספר המשימות שפועלות כדי לבדוק את היעילות של תהליך התזמון.
בקטע Workers בלוח הבקרה Monitoring, בודקים את התרשים Airflow tasks של הסביבה.
המשימות בתור ממתינות להרצה על ידי העובדים. אם בסביבה שלכם יש משימות בתור, יכול להיות שהמשמעות היא שהעובדים בסביבה שלכם עסוקים בביצוע משימות אחרות.
תמיד יש תורים בסביבה מסוימת, במיוחד בזמני שיא של עיבוד. עם זאת, אם אתם רואים מספר גבוה של משימות בתור, או מגמת עלייה בגרף, יכול להיות שהמשמעות היא שלעובדים אין מספיק קיבולת לעיבוד המשימות, או שמערכת Airflow מגבילה את ביצוע המשימות.
בדרך כלל, מספר גבוה של משימות בתור מתרחש כשמספר המשימות הפעילות מגיע לרמה המקסימלית.
כדי לפתור את שתי הבעיות:
מעקב אחרי השימוש במעבד (CPU) ובזיכרון של מסד הנתונים
בעיות בביצועים של מסד הנתונים של Airflow יכולות להוביל לבעיות כלליות בהרצת DAG. בדרך כלל אין סיבה לדאגה לגבי השימוש בדיסק של מסד הנתונים, כי הנפח של האחסון מתרחב אוטומטית לפי הצורך.
בלוח הבקרה Monitoring, בקטע SQL Database, בודקים את הגרפים של השימוש במעבד ובשימוש בזיכרון במסד הנתונים של Airflow:
- שימוש במעבד של מסד הנתונים
- השימוש בזיכרון של מסד הנתונים
אם השימוש במעבד של מסד הנתונים חורג מ-80% במשך יותר מכמה אחוזים מסך הזמן, מסד הנתונים עמוס מדי וצריך להגדיל את הקיבולת שלו.
ההגדרות של גודל מסד הנתונים נקבעות על ידי מאפיין גודל הסביבה של הסביבה שלכם. כדי להגדיל או להקטין את מסד הנתונים, משנים את גודל הסביבה לרמה אחרת (קטנה, בינונית, גדולה). הגדלת גודל הסביבה מגדילה את העלויות של הסביבה.
מעקב אחרי זמן האחזור של תזמון המשימות
אם זמן האחזור בין המשימות חורג מהרמות הצפויות (לדוגמה, 20 שניות או יותר), יכול להיות שהסביבה לא יכולה להתמודד עם עומס המשימות שנוצר על ידי הפעלות DAG.
אפשר לראות את תרשים השהייה בתזמון המשימות בממשק המשתמש של Airflow בסביבה שלכם.
בדוגמה הזו, העיכובים (2.5 ו-3.5 שניות) נמצאים בטווח המקובל, אבל חביון גבוה משמעותית עשוי להעיד על:
- יש עומס על הכלי לתזמון. עוקבים אחרי המעבד והזיכרון של מתזמן המשימות כדי לזהות סימנים לבעיות פוטנציאליות.
- אפשרויות ההגדרה של Airflow מגבילות את הביצוע. אפשר לנסות להגדיל את מספר העובדים בו-זמנית, להגדיל את מספר ה-DAG בו-זמנית או להגדיל את מספר הריצות הפעילות המקסימלי לכל DAG.
- אין מספיק עובדים להרצת המשימות. כדאי להגדיל את המספר המקסימלי של העובדים.
מעקב אחרי המעבד (CPU) והזיכרון של שרת האינטרנט
הביצועים של שרת האינטרנט של Airflow משפיעים על ממשק המשתמש של Airflow. בדרך כלל, שרת האינטרנט לא עמוס מדי. אם זה קורה, יכול להיות שיהיה שיפור בביצועים של ממשק המשתמש של Airflow, אבל זה לא ישפיע על הביצועים של הפעלות DAG.
בקטע Web server בלוח הבקרה Monitoring, בודקים את הגרפים של שרת האינטרנט של Airflow:
- שימוש במעבד בשרת האינטרנט
- שימוש בזיכרון של שרת האינטרנט
על סמך התצפיות שלך:
- אם השימוש ב-CPU של שרת האינטרנט גבוה מ-80% במשך יותר מכמה אחוזים מהזמן, מומלץ להגדיל את ה-CPU של שרת האינטרנט.
- אם אתם מבחינים בשימוש גבוה בזיכרון של שרת האינטרנט, כדאי להוסיף עוד זיכרון לשרת האינטרנט.
שינוי הפרמטרים של היקף וביצועים בסביבה
שינוי מספר המתזמנים
שינוי מספר המתזמנים משפר את הקיבולת של המתזמן ואת העמידות של התזמון ב-Airflow.
אם מגדילים את מספר המתזמנים, נפח התנועה אל מסד הנתונים של Airflow וממנו גדל. ברוב התרחישים, מומלץ להשתמש בשני מתזמני Airflow. השימוש בשלושה מתזמנים נדרש רק במקרים נדירים שבהם יש שיקולים מיוחדים. הגדרת יותר משלושה מתזמנים מובילה לעיתים קרובות לירידה בביצועים של הסביבה.
אם אתם צריכים לתזמן ולנתח DAG מהר יותר:TODO: C2: Airflow 2 options Dag processor and scheduler together -- one section C3: Airflow 2 options + Airflow 3 options for scheduler; Airflow 2 options + Airflow 3 options for DAG processor; -- two sections
- מגדירים שני מתזמני Airflow.
- הקצאת יותר משאבי מעבד (CPU) וזיכרון לתזמון של Airflow.
הגדלת הערך של [scheduler]job_heartbeat_sec.
דוגמאות:
המסוף
פועלים לפי השלבים במאמר בנושא התאמת פרמטרים של מתזמן כדי להגדיר את מספר המתזמנים הנדרש לסביבה שלכם.
gcloud
פועלים לפי השלבים במאמר בנושא התאמת פרמטרים של מתזמן כדי להגדיר את מספר המתזמנים הנדרש לסביבה שלכם.
בדוגמה הבאה, מספר המתזמנים מוגדר כשניים:
gcloud composer environments update example-environment \
--scheduler-count=2
Terraform
פועלים לפי השלבים במאמר בנושא התאמת פרמטרים של מתזמן כדי להגדיר את מספר המתזמנים הנדרש לסביבה שלכם.
בדוגמה הבאה, מספר המתזמנים מוגדר כשניים:
resource "google_composer_environment" "example-environment" {
# Other environment parameters
config {
workloads_config {
scheduler {
count = 2
}
}
}
}
שינוי המעבד והזיכרון של מתזמני הפעולות
הפרמטרים של המעבד והזיכרון הם לכל מתזמן בסביבה שלכם. לדוגמה, אם בסביבה שלכם יש שני מתזמנים, הקיבולת הכוללת היא כפולה מהמספר שצוין של CPU וזיכרון.
המסוף
פועלים לפי השלבים במאמר בנושא שינוי הפרמטרים של מתזמן כדי להגדיר את השימוש במעבד ובזיכרון עבור מתזמנים.
gcloud
פועלים לפי השלבים במאמר התאמת פרמטרים של מתזמן כדי להגדיר את המעבד והזיכרון למתזמנים.
בדוגמה הבאה משנים את המעבד והזיכרון של מתזמני המשימות. אפשר לציין רק מאפייני מעבד או זיכרון, בהתאם לצורך.
gcloud composer environments update example-environment \
--scheduler-cpu=0.5 \
--scheduler-memory=4
Terraform
פועלים לפי השלבים במאמר בנושא שינוי הפרמטרים של מתזמן כדי להגדיר את השימוש במעבד ובזיכרון עבור מתזמנים.
בדוגמה הבאה משנים את המעבד והזיכרון של מתזמני המשימות. אפשר להשמיט את מאפייני המעבד או הזיכרון, בהתאם לצורך.
resource "google_composer_environment" "example-environment" {
# Other environment parameters
config {
workloads_config {
scheduler {
cpu = "0.5"
memory_gb = "4"
}
}
}
}
שינוי המספר המקסימלי של עובדים
הגדלת המספר המקסימלי של העובדים מאפשרת לסביבה שלכם להתרחב באופן אוטומטי למספר גבוה יותר של עובדים, אם יש צורך בכך.
הקטנת המספר המקסימלי של העובדים מפחיתה את הקיבולת המקסימלית של הסביבה, אבל יכולה גם לעזור להפחית את עלויות הסביבה.
דוגמאות:
המסוף
פועלים לפי השלבים שמפורטים במאמר בנושא התאמת פרמטרים של עובדים כדי להגדיר את המספר המקסימלי הנדרש של עובדים לסביבה שלכם.
gcloud
פועלים לפי השלבים שמפורטים במאמר בנושא התאמת פרמטרים של עובדים כדי להגדיר את המספר המקסימלי הנדרש של עובדים לסביבה שלכם.
בדוגמה הבאה, המספר המקסימלי של העובדים מוגדר ל-6:
gcloud composer environments update example-environment \
--max-workers=6
Terraform
פועלים לפי השלבים שמפורטים במאמר בנושא התאמת פרמטרים של עובדים כדי להגדיר את המספר המקסימלי הנדרש של עובדים לסביבה שלכם.
בדוגמה הבאה, המספר המקסימלי של מתזמנים מוגדר ל-6:
resource "google_composer_environment" "example-environment" {
# Other environment parameters
config {
workloads_config {
worker {
max_count = "6"
}
}
}
}
שינוי המעבד והזיכרון של העובד
הקטנת הזיכרון של העובד יכולה לעזור אם גרף השימוש בעובד מצביע על ניצול נמוך מאוד של הזיכרון.
הגדלת הזיכרון של העובדים מאפשרת להם לטפל ביותר משימות בו-זמנית או לטפל במשימות שדורשות הרבה זיכרון. יכול להיות שהיא תפתור את הבעיה של הוצאת פודים של עובדים.
הפחתת המעבד של העובד יכולה לעזור אם בתרשים השימוש במעבד של העובד מצוין שמשאבי המעבד מוקצים יתר על המידה.
הגדלת המעבד (CPU) של ה-worker מאפשרת ל-workers לטפל ביותר משימות בו-זמנית, ובמקרים מסוימים לקצר את הזמן שנדרש לעיבוד המשימות האלה.
שינוי המעבד או הזיכרון של העובד מפעיל מחדש את העובדים, וזה עשוי להשפיע על משימות שפועלות. מומלץ לעשות זאת כשלא מופעלים DAG.
פרמטרי המעבד והזיכרון הם לכל עובד בסביבה שלכם. לדוגמה, אם בסביבה שלכם יש ארבעה עובדים, הקיבולת הכוללת היא פי ארבע ממספר המעבד והזיכרון שצוין.
המסוף
פועלים לפי השלבים במאמר התאמת פרמטרים של עובדים כדי להגדיר מעבד וזיכרון לעובדים.
gcloud
פועלים לפי השלבים במאמר התאמת פרמטרים של עובדים כדי להגדיר מעבד וזיכרון לעובדים.
בדוגמה הבאה משנים את המעבד והזיכרון של העובדים. אם צריך, אפשר להשמיט את מאפיין המעבד או הזיכרון.
gcloud composer environments update example-environment \
--worker-memory=4 \
--worker-cpu=2
Terraform
פועלים לפי השלבים במאמר התאמת פרמטרים של עובדים כדי להגדיר מעבד וזיכרון לעובדים.
בדוגמה הבאה משנים את המעבד והזיכרון של העובדים. במקרה הצורך, אפשר להשמיט את הפרמטר של המעבד או הזיכרון.
resource "google_composer_environment" "example-environment" {
# Other environment parameters
config {
workloads_config {
worker {
cpu = "2"
memory_gb = "4"
}
}
}
}
שינוי המעבד והזיכרון של שרת האינטרנט
הקטנת השימוש במעבד או בזיכרון של שרת האינטרנט יכולה לעזור אם תרשים השימוש בשרת האינטרנט מצביע על כך שהשימוש בו נמוך באופן קבוע.
שינוי הפרמטרים של שרת האינטרנט מפעיל מחדש את שרת האינטרנט, מה שגורם להשבתה זמנית של שרת האינטרנט. מומלץ לבצע שינויים מחוץ לשעות השימוש הרגילות.
המסוף
פועלים לפי השלבים שבקטע התאמת הפרמטרים של שרת האינטרנט כדי להגדיר את המעבד (CPU) והזיכרון של שרת האינטרנט.
gcloud
פועלים לפי השלבים שבקטע התאמת הפרמטרים של שרת האינטרנט כדי להגדיר את המעבד (CPU) והזיכרון של שרת האינטרנט.
בדוגמה הבאה משנים את השימוש במעבד ובזיכרון של שרת האינטרנט. אפשר להשמיט מאפייני מעבד או זיכרון, בהתאם לצורך.
gcloud composer environments update example-environment \
--web-server-cpu=2 \
--web-server-memory=4
Terraform
פועלים לפי השלבים שבקטע התאמת הפרמטרים של שרת האינטרנט כדי להגדיר את המעבד (CPU) והזיכרון של שרת האינטרנט.
בדוגמה הבאה משנים את השימוש במעבד ובזיכרון של שרת האינטרנט. אפשר להשמיט מאפייני מעבד או זיכרון, בהתאם לצורך.
resource "google_composer_environment" "example-environment" {
# Other environment parameters
config {
workloads_config {
web_server {
cpu = "2"
memory_gb = "4"
}
}
}
}
שינוי גודל הסביבה
שינוי הגודל של הסביבה משנה את הקיבולת של רכיבי ה-backend של Managed Airflow, כמו מסד הנתונים של Airflow והתור של Airflow.
- אם מדדי השימוש במסד הנתונים מצביעים על חוסר ניצול משמעותי, כדאי לשקול לשנות את גודל הסביבה לגודל קטן יותר (לדוגמה, מ'גדול' ל'בינוני' או מ'בינוני' ל'קטן').
אם אתם רואים שימוש גבוה במסד הנתונים של Airflow, כדאי להגדיל את גודל הסביבה.
המסוף
פועלים לפי השלבים במאמר שינוי גודל הסביבה כדי להגדיר את גודל הסביבה.
gcloud
פועלים לפי השלבים במאמר שינוי גודל הסביבה כדי להגדיר את גודל הסביבה.
בדוגמה הבאה משנים את גודל הסביבה ל-Medium.
gcloud composer environments update example-environment \
--environment-size=medium
Terraform
פועלים לפי השלבים במאמר שינוי גודל הסביבה כדי להגדיר את גודל הסביבה.
בדוגמה הבאה משנים את גודל הסביבה ל-Medium.
resource "google_composer_environment" "example-environment" {
# Other environment parameters
config {
environment_size = "medium"
}
}
שינוי המרווח של רשימת הספרייה ב-DAG
הגדלת המרווח בין רישומי הספרייה של DAG מפחיתה את העומס על מתזמן המשימות שקשור לגילוי של DAG חדשים בדלי של הסביבה.
- כדאי להגדיל את המרווח הזה אם אתם פורסים DAG חדשים לעיתים רחוקות.
- כדאי לקצר את המרווח הזה אם רוצים ש-Airflow יגיב מהר יותר לקובצי DAG חדשים שנפרסו.
כדי לשנות את הפרמטר הזה, צריך להגדיר ערך חדש לאפשרות ההגדרה הבאה ב-Airflow:
| קטע | מפתח | ערך | הערות |
|---|---|---|---|
scheduler |
dag_dir_list_interval |
ערך חדש של פרק הזמן של כרטיס המוצר | ערך ברירת המחדל, בשניות, הוא 120. |
שינוי מרווח הזמן של ניתוח קובץ ה-DAG
הגדלת מרווח הזמן לניתוח קובץ ה-DAG מצמצמת את העומס על מתזמן המשימות שמשויך לניתוח הרציף של קובצי DAG בתיקיית ה-DAG.
כדאי להגדיל את המרווח הזה אם יש לכם מספר גדול של DAG שלא משתנים לעיתים קרובות, או אם אתם רואים עומס גבוה על המתזמן באופן כללי.
כדי לשנות את הפרמטר הזה, צריך להגדיר ערך חדש לאפשרות ההגדרה הבאה ב-Airflow:
| קטע | מפתח | ערך | הערות |
|---|---|---|---|
scheduler |
min_file_process_interval |
ערך חדש לפרק הזמן של ניתוח ה-DAG | ערך ברירת המחדל, בשניות, הוא 30. |
בו-זמניות (concurrency) של עובדים
הביצועים של בו-זמניות והיכולת של הסביבה שלכם להתאמה אוטומטית לעומס קשורים לשתי הגדרות:
- מספר העובדים המינימלי ב-Airflow
- הפרמטר
[celery]worker_concurrency
ערכי ברירת המחדל שסופקו על ידי Managed Airflow הם אופטימליים לרוב תרחישי השימוש, אבל יכול להיות שהסביבה שלכם תרוויח מהתאמות מותאמות אישית.
שיקולי ביצועים לגבי בו-זמניות של עובדים
הפרמטר [celery]worker_concurrency מגדיר את מספר המשימות ש-worker יחיד יכול לקחת מתור המשימות.
מהירות ביצוע המשימות תלויה בכמה גורמים, כמו המעבד (CPU) של העובד, הזיכרון וסוג העבודה עצמה.
התאמה אוטומטית לעומס (autoscaling) של קובצי שירות
Managed Service for Apache Airflow מנטר את תור המשימות ויוצר עובדים נוספים כדי לבצע את המשימות שממתינות. הגדרה של [celery]worker_concurrency לערך גבוה פירושה שכל worker יכול לקבל הרבה משימות, ולכן בנסיבות מסוימות התור לא יתמלא אף פעם, וההתאמה האוטומטית לעומס לא תופעל.
לדוגמה, בסביבת Managed Service for Apache Airflow עם שני עובדי Airflow, אם [celery]worker_concurrency מוגדר ל-100 ויש 200 משימות בתור, כל עובד יבחר 100 משימות. הפעולה הזו משאירה את התור ריק ולא מפעילה שינוי גודל אוטומטי. אם המשימות האלה נמשכות זמן רב, יכול להיות שיהיו בעיות בביצועים.
אבל אם המשימות קטנות ומהירות לביצוע, ערך גבוה בהגדרה [celery]worker_concurrency עלול להוביל להרחבה מהירה מדי.
לדוגמה, אם בסביבה הזו יש 300 משימות בתור, Managed Service for Apache Airflow יתחיל ליצור עובדים חדשים. אבל אם 200 המשימות הראשונות מסתיימות לפני שהעובדים החדשים מוכנים, עובד קיים יכול לבצע אותן. התוצאה הסופית היא שהתאמה אוטומטית לעומס יוצרת עובדים חדשים, אבל אין להם משימות.
ההתאמה של [celery]worker_concurrency למקרים מיוחדים צריכה להתבסס על זמני הביצוע המקסימליים של המשימות ומספרי התורים:
- במשימות שלוקח יותר זמן להשלים, העובדים לא יכולים לרוקן את התור לגמרי.
- כדי לבצע משימות קטנות ומהירות יותר, צריך להגדיל את המספר המינימלי של תהליכי העבודה של Airflow כדי להימנע מהרחבה מוגזמת.
שינוי מספר העובדים בו-זמנית
שינוי הפרמטר הזה משנה את מספר המשימות שעובד יחיד יכול לבצע בו-זמנית.
לדוגמה, Worker עם 0.5 CPU יכול בדרך כלל לטפל ב-6 משימות בו-זמניות, וסביבה עם שלושה Workers כאלה יכולה לטפל בעד 18 משימות בו-זמניות.
כדאי להגדיל את הפרמטר הזה אם יש משימות שממתינות בתור, והעובדים משתמשים באחוז נמוך של משאבי המעבד והזיכרון שלהם בו-זמנית.
כדאי להקטין את הפרמטר הזה אם מתקבלות הודעות על הוצאת pods; כך יצטמצם מספר המשימות שכל worker מנסה לעבד. אפשרות נוספת היא להגדיל את הזיכרון של העובד.
כברירת מחדל, בו-זמניות (concurrency) של worker מוגדרת על סמך מספר המופעים של משימות מקבילות קלות משקל ש-worker יכול להכיל. כלומר, הערך שלו תלוי במגבלות של משאבי העובדים. ערך המקבילות של העובדים לא תלוי במספר העובדים בסביבה שלכם.
כדי לשנות את הפרמטר הזה, צריך להגדיר ערך חדש לאפשרות ההגדרה הבאה ב-Airflow:
| קטע | מפתח | ערך |
|---|---|---|
celery |
worker_concurrency |
ערך חדש של מספר העובדים המקבילים |
שינוי של מקביליות DAG
ההגדרה של מקביליות DAG מגדירה את המספר המקסימלי של מופעי משימות שמותר להפעיל בו-זמנית בכל DAG. כדאי להגדיל את הערך הזה כשקובצי ה-DAG מריצים מספר גדול של משימות בו-זמנית. אם ההגדרה הזו נמוכה, הכלי לתזמון מעכב את הוספת המשימות לתור, מה שמפחית גם את היעילות של שינוי הגודל האוטומטי של הסביבה.
כדי לשנות את הפרמטר הזה, צריך להגדיר ערך חדש לאפשרות ההגדרה הבאה ב-Airflow:
| קטע | מפתח | ערך | הערות |
|---|---|---|---|
core |
max_active_tasks_per_dag |
ערך חדש של מקבילות DAG | ערך ברירת המחדל הוא 16 |
הגדלת מספר ההרצות הפעילות המקסימלי לכל DAG
במאפיין הזה מגדירים את המספר המקסימלי של הפעלות DAG פעילות לכל DAG. אם צריך להפעיל את אותו DAG כמה פעמים בו-זמנית, למשל עם ארגומנטים שונים של קלט, המאפיין הזה מאפשר למתזמן להתחיל הפעלות כאלה במקביל.
כדי לשנות את הפרמטר הזה, צריך להגדיר ערך חדש לאפשרות ההגדרה הבאה ב-Airflow:
| קטע | מפתח | ערך | הערות |
|---|---|---|---|
core |
max_active_runs_per_dag |
ערך חדש למספר הריצות הפעילות המקסימלי לכל DAG | ערך ברירת המחדל הוא 25 |