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

שאלה
-
היי,
מידי פעם השרת שלנו (sql server 2008 sp3) עמוס, כיאה וכיאות למערכת שעובדת.
שמתי לב שכשזה מתרחש, ה-Waiting Tasks ב-Activity monitor גדל, ורואים שיש משימות מחכות ונערמות לביצוע (התמונה להלן לא מציגה מצב עמוס, זה רק לצורך המחשה).אני מניחה שהמידע של Waiting Tasks נמצא בVIEW sys.dm_os_waiting_tasks,
אבל לא ממש הבנתי את הקורלציה בין הVIEW לבין המספר שמופיע ב-Activity monitor כאשר השרת עמוס.
מעבר לכך לסיכומו של עניין,
אני מחפשת דרך לקבל איזושהי התרעה, ברגע שמצב כזה מתרחש - לקבל התרעה כאשר השרת נהיה עמוס וכבד, כדי שנוכל לחקור מיידית ולא לחכות לתגובות של משתמשים "היי, המערכת נהיית איטית" וכד'.
הנחתי שאמצא משהו שקשור ל-XE, אבל לא מצאתי משהו קונקרטי.
אשמח לכיוונים.
תודה מראש,
רוני.
תשובות
-
הי רוני,
עכשיו אני מבין טוב יותר את כוונתך.
זה בהחלט נכון שעומס על השרת יתבטא בכמות Waiting Tasks גדולה יותר, וזה בהחלט רעיון טוב לנטר את כמות ה-Waiting Tasks על מנת להתריע על עומס חריג על השרת. הדרך לעשות זאת היא באמצעות ניטור העמודה "waiting_tasks_count" ב-sys.dm_os_wait_stats. את יכולה פשוט לסכום את העמודה הזאת ולשמור את התוצאה בטבלה, נניח פעם בדקה. עכשיו את יכולה ליצור התראה (Job, Alert, Trigger) שתופעל בכל פעם שכמות ה-Waiting Tasks עולה באופן חריג מהממוצע.
האתגר כאן הוא להגיע למצב שההתראה מופעלת כשיש בעיה אמיתית, ולא כשיש בעיה רגעית שנעלמת מיד או כשיש עליה בכמות ה-Waiting Tasks שנובעת מעונתיות (למשל, שעת השיא במשך היום). לשם כך צריך לעבוד עם ממוצעים נעים ולקחת בחשבון את המחזוריות של המערכת מבחינת עומס.
בהצלחה!
-----------------------------
גיא גלנצר
יועץ ומדריך SQL Server
Madeira - SQL Server Services
http://www.madeira.co.il- הוצע כתשובה על-ידי pituachMVP, Moderator יום חמישי 17 ינואר 2013 05:00
- סומן כתשובה על-ידי Roni Vered Adar יום חמישי 17 ינואר 2013 13:07
כל התגובות
-
הי רוני,
נשמע לי עבודה קלאסית ל SSIS
מה דעתך על SSIS package ששולח מייל רק בתנאי שערך כלשהו מ DMV לדוגמא sys.dm_os_waiting_tasks יחזיר ערך שגבוה מסף מסוים?
אם את רוצה אפשר לקחת את זה רחוק יותר ולצרף במייל דוח מפורט יותר (שיופק רק במקרה וזוהתה בעיה ) על כל מיני טבלאות מערכת לדוגמא אפשר להשתמש בדוחות של
מקווה שעזרתי,
נועם
-
הי רוני,
השאלה שלך מאוד כללית. זה כמו לשאול "איך מנטרים שרת SQL Server?"...
כמו שאת יודעת, יש המון כלי ניטור, המון מדדים, המון אפשרויות...
גם עומס על המערכת יכול להתבטא בהרבה דרכים - CPU גבוה, IO גבוה, הרבה נעילות...
בקיצור, נסי למקד את השאלה...
תודה!
-----------------------------
גיא גלנצר
יועץ ומדריך SQL Server
Madeira - SQL Server Services
http://www.madeira.co.il -
תודה על התגובה,
כן, אני יודעת שזו שאלה כללית, אבל זה בדיוק העניין.
אני לא רוצה לנטר ספציפית את הCPU או IO או נעילות.
אני רוצה לקבל התראה כללית, כאשר השרת עמוס, כדי לגשת אליו עוד לפני שהמשתמשים מתלוננים.
הדבר היחיד הכללי ששמתי אליו לב, הוא שכאשר ערך ה-Waiting tasks ב-Activity monitor גבוה, זה מתקשר לעומס בשרת, ותהיתי אם אפשר לקבל את הפרט הזה בצורה אחרת.תודה,
רוני.
-
הי רוני,
עכשיו אני מבין טוב יותר את כוונתך.
זה בהחלט נכון שעומס על השרת יתבטא בכמות Waiting Tasks גדולה יותר, וזה בהחלט רעיון טוב לנטר את כמות ה-Waiting Tasks על מנת להתריע על עומס חריג על השרת. הדרך לעשות זאת היא באמצעות ניטור העמודה "waiting_tasks_count" ב-sys.dm_os_wait_stats. את יכולה פשוט לסכום את העמודה הזאת ולשמור את התוצאה בטבלה, נניח פעם בדקה. עכשיו את יכולה ליצור התראה (Job, Alert, Trigger) שתופעל בכל פעם שכמות ה-Waiting Tasks עולה באופן חריג מהממוצע.
האתגר כאן הוא להגיע למצב שההתראה מופעלת כשיש בעיה אמיתית, ולא כשיש בעיה רגעית שנעלמת מיד או כשיש עליה בכמות ה-Waiting Tasks שנובעת מעונתיות (למשל, שעת השיא במשך היום). לשם כך צריך לעבוד עם ממוצעים נעים ולקחת בחשבון את המחזוריות של המערכת מבחינת עומס.
בהצלחה!
-----------------------------
גיא גלנצר
יועץ ומדריך SQL Server
Madeira - SQL Server Services
http://www.madeira.co.il- הוצע כתשובה על-ידי pituachMVP, Moderator יום חמישי 17 ינואר 2013 05:00
- סומן כתשובה על-ידי Roni Vered Adar יום חמישי 17 ינואר 2013 13:07
-
הי רוני,
אשמח אם תוכלי לעדכן את הפורום בפתרון שהחלטת ליישם.
אם יש לך עדיין שאלות פתוחות, את מוזמנת לשתף את הפורום.
אם קיבלת עזרה מהפורום, אודה לך אם תסמני את התגובות הרלוונטיות כתשובות.
תודה!
-----------------------------
גיא גלנצר
יועץ ומדריך SQL Server
Madeira - SQL Server Services
http://www.madeira.co.il