Managed Airflow (דור 3) | Managed Airflow (דור 2) | Managed Airflow (דור 1 מדור קודם)
הדף הזה מתייחס רק לבעיות שקשורות לעיבוד קובץ DAG. לבעיות בתזמון משימות, אפשר לעיין במאמר פתרון בעיות בתזמון משימות ב-Airflow.
תהליך עבודה של פתרון בעיות
בדיקת יומני מעבד DAG
אם יש לכם גרפים מכוונים מחזוריים (DAG) מורכבים, יכול להיות שמעבדי ה-DAG של Airflow לא ינתחו את כל ה-DAG. הדבר עלול להוביל לבעיות רבות עם התסמינים הבאים.
תסמינים:
אם מעבד DAG נתקל בבעיות בניתוח של DAG, יכול להיות שזה יוביל לשילוב של הבעיות שמופיעות ברשימה. אם קובצי ה-DAG נוצרים באופן דינמי, הבעיות האלה עשויות להיות משמעותיות יותר בהשוואה לקובצי DAG סטטיים.
- אי אפשר לראות את ה-DAG בממשק המשתמש של Airflow ובממשק המשתמש של DAG.
- אין תזמון להרצת DAG.
- יש שגיאות ביומני המעבד של DAG, לדוגמה:
dag-processor-manager [2023-04-21 21:10:44,510] {manager.py:1144} ERROR - Processor for /home/airflow/gcs/dags/dag-example.py with PID 68311 started at 2023-04-21T21:09:53.772793+00:00 has timed out, killing it.או
dag-processor-manager [2023-04-26 06:18:34,860] {manager.py:948} ERROR - Processor for /home/airflow/gcs/dags/dag-example.py exited with return code 1.משימות Airflow שמתוזמנות להרצה מבוטלות, והרצות DAG של DAGs שלא הצליחו לעבור ניתוח עשויות להיות מסומנות כ
failed. לדוגמה:airflow-scheduler Failed to get task '<TaskInstance: dag-example.task1--1 manual__2023-04-17T10:02:03.137439+00:00 [removed]>' for dag 'dag-example'. Marking it as removed.
פתרון:
הגדלת הפרמטרים שקשורים לניתוח DAG:
מגדילים את הערך
[core]dagbag_import_timeoutל-120 שניות לפחות (או יותר, אם נדרש).מגדילים את הערך
[core]dag_file_processor_timeoutל-180 שניות לפחות (או יותר, אם נדרש). הערך הזה צריך להיות גבוה מ-[core]dagbag_import_timeout.
צריך לתקן או להסיר DAG שגורמים לבעיות במעבדי DAG.
בדיקת זמני הניתוח של DAG
כדי לבדוק אם הבעיה מתרחשת בזמן הניתוח של DAG, פועלים לפי השלבים הבאים.
המסוף
במסוף Google Cloud , אפשר להשתמש בדף Monitoring ובכרטיסייה Logs כדי לבדוק את זמני הניתוח של DAG.
בודקים את זמני הניתוח של DAG באמצעות דף הניטור של Managed Service for Apache Airflow:
במסוף Google Cloud , עוברים לדף Environments.
ברשימת הסביבות, לוחצים על שם הסביבה. ייפתח הדף Monitoring.
בכרטיסייה Monitoring, בוחרים באפשרות DAG Statistics ומעיינים בתרשים Total parse time for all DAG files כדי לזהות בעיות אפשריות. מומלץ לעקוב אחרי התרשים הזה במשך זמן מה כדי לזהות בעיות בניתוח של DAG במהלך כמה מחזורי ניתוח של DAG.
בודקים את זמני הניתוח של DAG בכרטיסייה Managed Service for Apache Airflow Logs (יומנים של Managed Service for Apache Airflow):
במסוף Google Cloud , עוברים לדף Environments.
ברשימת הסביבות, לוחצים על שם הסביבה. ייפתח הדף Monitoring.
עוברים לכרטיסייה Logs (יומנים), ובעץ הניווט All logs (כל היומנים) בוחרים בקטע DAG processor manager (מנהל מעבד DAG).
בודקים את היומנים של
dag-processor-managerומזהים בעיות אפשריות.
gcloud
אפשר להשתמש בפקודה dags report כדי לראות את זמן הניתוח של כל ה-DAG.
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
dags report
מחליפים את:
-
ENVIRONMENT_NAMEבשם הסביבה. -
LOCATIONעם האזור שבו הסביבה ממוקמת.
הפלט של הפקודה אמור להיראות כך:
file | duration | dag_num | task_num | dags
======================+================+=========+==========+===================
/manydagsbig.py | 0:00:00.038334 | 2 | 10 | serial-0,serial-0
/airflow_monitoring.py| 0:00:00.001620 | 1 | 1 | airflow_monitoring
מחפשים את הערך של משך הזמן של כל אחד מה-DAG שמופיעים בטבלה. ערך גדול עשוי להצביע על כך שאחד מגרפי ה-DAG לא מיושם בצורה אופטימלית. מטבלת הפלט אפשר לזהות אילו DAGs כוללים זמן ניתוח ארוך.
פתרון בעיות בזמן הניתוח של DAG
בקטעים הבאים מתוארים תסמינים ופתרונות אפשריים לכמה בעיות נפוצות בזמן ניתוח DAG.
הגדרת מעבד ה-DAG להתעלמות מקבצים לא נחוצים
כדי לשפר את הביצועים של מעבד Airflow DAG, אפשר לדלג על קבצים מיותרים בתיקיית ה-DAG. מעבד ה-DAG של Airflow מתעלם מקבצים ותיקיות שצוינו בקובץ.airflowignore.
כדי שמעבד ה-DAG של Airflow יתעלם מקבצים מיותרים:
- יוצרים קובץ
.airflowignore. - בקובץ הזה, מפרטים את הקבצים והתיקיות שצריך להתעלם מהם.
- מעלים את הקובץ הזה לתיקייה
/dagsבקטגוריה של הסביבה.
מידע נוסף על פורמט הקובץ .airflowignore זמין במאמרי העזרה של Airflow.
תהליכי Airflow שהושעו ב-DAG
אתם יכולים להשהות DAG כדי להפסיק את ההרצה שלו. כך נחסכים משאבים של עובדי Airflow.
מעבדי Airflow DAG ממשיכים לנתח DAG מושהים. כדי לשפר את הביצועים של מעבדי DAG, אפשר להשתמש ב-.airflowignore או למחוק DAG מושהים מהתיקייה DAGs.
בעיות נפוצות
בקטעים הבאים מתוארים תסמינים ופתרונות אפשריים לכמה בעיות נפוצות בניתוח.
הזמן הקצוב לתפוגה של ייבוא טעינת DAG
תיאור הבעיה:
- בממשק האינטרנט של Airflow, בחלק העליון של דף רשימת ה-DAG, מוצגת תיבת התראה אדומה
Broken DAG: [/path/to/dagfile] Timeout. ב-Cloud Monitoring: היומנים
airflow-schedulerמכילים רשומות שדומות לרשומות הבאות:ERROR - Process timed outERROR - Failed to import: /path/to/dagfileAirflowTaskTimeout: Timeout
פתרון:
עוקפים את אפשרות ההגדרה dag_file_processor_timeout Airflow ומאפשרים יותר זמן לניתוח DAG:
| קטע | מפתח | ערך |
|---|---|---|
core |
dag_file_processor_timeout |
הערך החדש של הזמן הקצוב לתפוגה |
DAG לא מוצג בממשק המשתמש של Airflow או בממשק המשתמש של DAG, והמתזמן לא מתזמן אותו
מעבד ה-DAG מנתח כל DAG לפני שהמתזמן יכול לתזמן אותו, ולפני ש-DAG הופך לגלוי בממשק המשתמש של Airflow או בממשק המשתמש של DAG.
אפשרויות ההגדרה הבאות של Airflow מגדירות את פסק הזמן לניתוח של DAG:
[core]dagbag_import_timeoutמגדיר את משך הזמן שמעבד ה-DAG צריך להקצות לניתוח של DAG יחיד.
[core]dag_file_processor_timeoutמגדיר את משך הזמן הכולל שמעבד ה-DAG יכול להקדיש לניתוח כל ה-DAG.
אם DAG לא מוצג בממשק המשתמש של Airflow או בממשק המשתמש של DAG:
בודקים את היומנים של מעבד ה-DAG אם מעבד ה-DAG מצליח לעבד את ה-DAG שלכם בצורה תקינה. במקרה של בעיות, יכול להיות שיופיעו רשומות היומן הבאות ביומנים של מעבד ה-DAG או של המתזמן:
[2020-12-03 03:06:45,672] {dag_processing.py:1334} ERROR - Processor for /usr/local/airflow/dags/example_dag.py with PID 21903 started at 2020-12-03T03:05:55.442709+00:00 has timed out, killing it.בודקים את היומנים של מתזמן הפגישות כדי לוודא שהוא פועל בצורה תקינה. במקרה של בעיות, יכול להיות שיופיעו רשומות היומן הבאות ביומני מתזמן:
DagFileProcessorManager (PID=732) last sent a heartbeat 240.09 seconds ago! Restarting it Process timed out, PID: 68496
פתרונות:
מתקנים את כל השגיאות בניתוח ה-DAG. מעבד ה-DAG מנתח כמה DAG, ובמקרים נדירים שגיאות בניתוח של DAG אחד יכולות להשפיע לרעה על הניתוח של DAG אחרים.
אם ניתוח ה-DAG נמשך יותר ממספר השניות שמוגדר ב-
[core]dagbag_import_timeout, צריך להגדיל את הזמן הקצוב לתפוגה.אם ניתוח כל ה-DAGs נמשך יותר ממספר השניות שמוגדר ב-
[core]dag_file_processor_timeout, צריך להגדיל את הזמן הקצוב לתפוגה.אם ניתוח ה-DAG נמשך זמן רב, יכול להיות שהוא לא מיושם בצורה אופטימלית. לדוגמה, אם הוא קורא הרבה משתני סביבה או מבצע קריאות למסד נתונים של שירותים חיצוניים או של Airflow. כדאי להימנע ככל האפשר מביצוע פעולות כאלה בקטעים גלובליים של גרפים מכווני מחזור (DAG).
להגדיל את משאבי המעבד והזיכרון של מעבד ה-DAG כדי שהוא יוכל לפעול מהר יותר.