הסבר על תוצאות הביצועים ב-AlloyDB Omni במכונה וירטואלית

בחירת גרסה של מאמר העזרה:

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

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

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

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

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

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

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

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

תרשים של שינוי בהשהיה שמראה שההשהיה נשארת קבועה עד שמתרחשת בעיה בגלל תחרות על משאבים.
איור 2: תרשים אופייני של התאמה לעומס (scaling) של זמן האחזור. ההשהיה נשארת קבועה עד שמתרחשת התנגשות בגלל תחרות על משאבים.

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

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

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

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

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

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

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

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

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

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