פתרון בעיות של משימות שמתעכבות במשימות אצווה

פריטים שנותרו מאחור הם פריטי עבודה שמאטים את משימות ה-Dataflow כי הם מונעים את ביצוע העבודה במקביל.

בצינורות להרצת משימות באצווה, פריט עבודה שמתעכב מוגדר כפריט עבודה עם המאפיינים הבאים:

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

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

‫Dataflow מזהה חריגים שמתרחשים במהלך משימות אצווה. אם Dataflow מזהה עבודה שמתעכבת, הוא גם מנסה לקבוע את הסיבה לעיכוב.

צפייה במינויים שלא חודשו במסוף Google Cloud

אחרי שמתחילים משימה ב-Dataflow, אפשר להשתמש במסוף Google Cloud כדי לראות את כל המשימות שמתעכבות.

אפשר לראות את המשימות שמתעכבות לפי שלב או לפי עובד. אפשר להשתמש בתצוגות האלה כדי לזהות את השלבים שבהם יש חריגים, ואז לאתר את העובדים שבהם התרחשו חריגים בכל שלב.

הצגת משתמשים שלא מתקדמים בשלבים

כדי לראות את המועמדים שלא עברו לשלב הבא:

  1. נכנסים לדף Jobs של Dataflow במסוף Google Cloud .

    עוברים אל משימות.

  2. לוחצים על שם המשימה.

  3. בדף פרטי העבודה, לוחצים על הכרטיסייה פרטי הביצוע.

  4. ברשימה Graph view, בוחרים באפשרות Stage progress. בתרשים ההתקדמות מוצגים סכומים מצטברים של כל המשתמשים שהצטרפו באיחור בכל שלב.

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

צפייה בפריטים שנותרו לביצוע לפי עובד

כדי לראות את העובדים שלא סיימו את המשימות בזמן:

  1. נכנסים לדף Jobs של Dataflow במסוף Google Cloud .

    עוברים אל משימות.

  2. לוחצים על שם המשימה.

  3. בדף פרטי העבודה, לוחצים על הכרטיסייה פרטי הביצוע.

  4. ברשימה Graph view בוחרים באפשרות Worker progress.

  5. ברשימה Filter workers by stage (סינון העובדים לפי שלב), בוחרים את השלב. בתרשים ההתקדמות מוצגים כל המשתמשים שלא השלימו את השלב הזה. החלק של העמודה שבו זוהה לראשונה הערך החריג מוצל בצורה כהה יותר.

  6. כדי לראות את הפרטים של עובד מסוים, מעבירים את העכבר מעל לעמודה שלו.

בחלונית Stage info, בקטע Straggler details מפורטים כל העובדים שנותרו מאחור שמוצגים בדף, עם המידע הבא:

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

פתרון בעיות של קבצים שנתקעים בעיבוד

‫Dataflow מזהה את הסיבות הבאות לבעיות בצינורות של עיבוד באצווה:

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

  • Slow Worker. בעובד איטי, פריטי העבודה פועלים לאט יותר מהרגיל. לרוב, מהירות העיבוד של worker איטי נמוכה ממהירות העיבוד של workers שמבצעים עבודה דומה באותו שלב. יש הרבה גורמים שיכולים לגרום להאטה של תהליכי Worker, כולל מחסור במעבדים (CPU), החלפה תכופה של דפים בזיכרון (thrashing), ארכיטקטורת המכונה ותהליכי Worker תקועים. כשמתרחשת האטה, Dataflow מנסה לפתור את הבעיה באופן אוטומטי. מידע נוסף מופיע במאמר הזה בקטע הפחתה אוטומטית של חריגות שנובעות מעובדים איטיים.

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

פתרון בעיות של תהליכים שמתעכבים בגלל מקשי קיצור

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

אם Dataflow מזהה נתונים שמתעכבים בגלל מקש חם, בחלונית Straggler Details (פרטי הנתונים שמתעכבים) מופיע Hot Key כסיבה.

כברירת מחדל, Dataflow לא מציג את ערך המפתח של מקש הקיצור. כדי להציג את ערך המפתח, מגדירים את אפשרות הצינור hotKeyLoggingEnabled לערך true כשמריצים את העבודה.

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

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

מידע נוסף זמין בבקשה הבאה להוספת תכונה: beam-issue/28186.

צמצום אוטומטי של חריגות שנובעות מעובדים איטיים

עובדים איטיים הם תופעה לא נפוצה ב-Dataflow, אבל הם יכולים להשפיע על ביצועי העבודה. כדי למנוע בעיות בביצועים, כש-Dataflow מזהה עובדים איטיים, הוא מנסה לפתור את הבעיה לפני שהעובדים גורמים לבעיות.

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

אם מזוהה עובד איטי והבעיה נפתרת בהצלחה, ההודעה הבאה מוצגת ביומני job-message:

Slow worker ... detected and automatically remediated ...

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

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

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

שימוש בהרצה ספקולטיבית כדי להימנע מבעיות של תהליכים שמתעכבים

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

המאמרים הבאים