HiTakeJobHiTakeJob

מה זה בדיקות עומסים? הסבר + משרות פתוחות בישראל

זמן קריאה: 6 דקות

בדיקות עומסים בודקות איך המערכת מתנהגת כשהרבה משתמשים פועלים בה בו-זמנית: כמה היא מחזיקה, מתי היא מתחילה להאט, ומה נשבר ראשון. זו בדיקת התנהגות תחת לחץ ולא בדיקת נכונות. בלוח HiTakeJob פתוחות כרגע 110 משרות שמזכירות Kubernetes, 20 שמזכירות Grafana ו-20 שמזכירות Prometheus.

שלושת סוגי הבדיקות שמתבלבלים ביניהם

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

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

מה מודדים בפועל

  • זמן תגובה באחוזונים. לא ממוצע - ממוצע של 200 אלפיות שנייה מסתיר 2% מהמשתמשים שמחכים חמש שניות.
  • תפוקה: כמה בקשות בשנייה המערכת מסיימת בהצלחה.
  • שיעור שגיאות כפונקציה של העומס - מאיזו נקודה הוא מתחיל לעלות.
  • ניצול משאבים: מעבד, זיכרון, חיבורים למסד נתונים ותורים.
  • נקודת הרוויה: העומס שממנו והלאה הוספת תעבורה כבר לא מגדילה תפוקה אלא רק מאריכה המתנה.

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

איך בונים תרחיש שמייצג מציאות

הטעות הנפוצה היא להפציץ נקודת קצה אחת באלף בקשות בשנייה. זה מודד משהו, אבל לא את מה שקורה בפועל. תרחיש טוב מחקה התנהגות אמיתית:

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

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

מה בדרך כלל נשבר ראשון

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

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

איפה מריצים - ומה הסכנה

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

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

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

מה עושים עם התוצאות

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

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

מתי כדאי להריץ

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

הסעיף השלישי הוא מה שהופך את זה מפרויקט חד-פעמי לתהליך. בדיקה שרצה פעם בשנה נותנת תמונה של רגע; בדיקה קבועה מגלה שגרסה מסוימת האטה את המערכת ב-30% בלי שאיש שם לב.

איך מייצרים עומס בפועל

העומס נוצר על ידי תוכנה שמדמה משתמשים רבים במקביל, ויש שלוש שאלות שקובעות אם המדידה אמינה:

  • מאיפה מריצים. מכונה אחת חלשה תגיע לגבול שלה לפני שהמערכת תגיע לגבול שלה - ואז מדדתם את מחולל העומס ולא את המערכת.
  • האם מודדים גם מהצד השני. זמן התגובה שהכלי מדווח כולל רשת; המדדים מהשרת מראים כמה מזה באמת שלכם.
  • האם המטמון מחמם את התוצאה. הרצה שנייה על אותם נתונים תיתן מספרים יפים ולא נכונים.

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

מי עושה את זה בישראל

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

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

שאלות נפוצות

מה ההבדל בין בדיקת עומס לבדיקת ביצועים?

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

למה מודדים אחוזונים ולא ממוצע?

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

כמה משתמשים צריך לדמות?

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

האם אפשר להריץ את זה על ייצור?

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

מה עושים כשהתוצאות גרועות?

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

זה נדרש גם בסטארטאפ קטן?

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

מאמרים נוספים

המשרות באתר