none
ניטור שרתים RRS feed

  • שאלה

  • שלום,

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

    תודה,

    מיכל

    יום ראשון 23 אוקטובר 2011 08:24

תשובות

  • הי,

    1. sys.dm_exec_requests או sys.sysprocesses יתן לך פירוט של התהליכים שכרגע רצים, תחפשי Status-ים Running או Suspended בקיצור לא Sleeping.

    תבדקי האם יש תהליכים שנעולים ע"י תהליך אחר בעמודת blocking_session_id או blocked בהתאמה.

    תבדקי wait times ו- Wait resources.

    2. תפעילי פרופיילר על השרת ותסנני לפי Reads ו- או Duration.

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

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

    אני ישלח תשובה מלאה בנושא מאוחר יותר אך כרגע זה בגדול מה שיש לך לעשות כעזרה ראשונה.

    בקיצור -

    1. לראות מה רץ.

    2. להבין מה גורם לאיטיות.

    3. להחליט האם לשחרר את המשאבים יזום הוא לחקות שירד העומס.

    בהצלחה,


    אסף שלם
    • סומן כתשובה על-ידי michal12 יום ראשון 23 אוקטובר 2011 09:00
    יום ראשון 23 אוקטובר 2011 08:38
  • הי,

    יש לך את התשובה ...

    התהליך שמריץ את Select yeud_code, yeud_desc ..... הוא זה שגורם ל- CPU גבוה.

    תעצרי אותו ותראי האם ה- Cpu utilization ירד.

     


    אסף שלם
    • סומן כתשובה על-ידי michal12 יום רביעי 26 אוקטובר 2011 10:57
    יום שני 24 אוקטובר 2011 12:28

כל התגובות

  • הי,

    1. sys.dm_exec_requests או sys.sysprocesses יתן לך פירוט של התהליכים שכרגע רצים, תחפשי Status-ים Running או Suspended בקיצור לא Sleeping.

    תבדקי האם יש תהליכים שנעולים ע"י תהליך אחר בעמודת blocking_session_id או blocked בהתאמה.

    תבדקי wait times ו- Wait resources.

    2. תפעילי פרופיילר על השרת ותסנני לפי Reads ו- או Duration.

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

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

    אני ישלח תשובה מלאה בנושא מאוחר יותר אך כרגע זה בגדול מה שיש לך לעשות כעזרה ראשונה.

    בקיצור -

    1. לראות מה רץ.

    2. להבין מה גורם לאיטיות.

    3. להחליט האם לשחרר את המשאבים יזום הוא לחקות שירד העומס.

    בהצלחה,


    אסף שלם
    • סומן כתשובה על-ידי michal12 יום ראשון 23 אוקטובר 2011 09:00
    יום ראשון 23 אוקטובר 2011 08:38
  • אסף, תודה רבה על תשובתך המהירה.

    ביצעתי את הבדיקות ויש תהליך אחד בלבד שרץ ואין blocking.

    הפעלתי profiler (trace סטנדרטי). מה נחשב כ- duration ארוך?

    בנוסף, בבדיקת ה- task manager אני רואה שה-CPU "משתולל" ושתהליך ה- sql (sqlserv.exe) צורך I/O מאוד גבוהים (I/Q Reads-Writes: 21,000,000-24,000,000 ).

    יום ראשון 23 אוקטובר 2011 09:57
  • הי,

    במידה ואת רואה את ה- Service של ה- SQL server "משתולל" ב- task manager סימן שיש תהליך שרץ ברקע ומנצל משאבים.

    ראשית ע"י הפרופיילר במידה ואת מסננת לפי Duration את תזהי את התהליך רק בסיום הריצה שלו, הייתי כרגע נצמד לבדיקה יסודית יותר מה כרגע רץ וגורם ל-Service לצרוך הרבה משאבים.

    תשלחי את ה- output של השאילתא המצורפת.

    Duration ארוך תלוי ב- Response time שלו את מצפה.

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

    Select session_id, text, status, wait_time, wait_resource, start_time,  total_elapsed_time, blocking_session_id        
    from sys.dm_exec_requests 
    Outer apply sys.dm_exec_sql_text(sql_handle)
    Where session_id > 50 and session_id != @@spid
    

     


    אסף שלם
    יום ראשון 23 אוקטובר 2011 10:13
  • הי אסף,

    האם יש דרך לשלוח את תוצאת השאילתא כקובץ מצורף?


    • נערך על-ידי michal12 יום ראשון 23 אוקטובר 2011 12:45
    יום ראשון 23 אוקטובר 2011 12:45
  • הי,

    יש דרך שאפילו מפורטת באחד הפוסטים אבל אני לא זוכר איך.

    יש שתי אופציות:

    1. ע"י print screen וצירוף תמונה.

    2. תשמרי ברשת היכן שהו ושלחי לינק.

    בהצלחה


    אסף שלם
    יום ראשון 23 אוקטובר 2011 12:52
  • יום ראשון 23 אוקטובר 2011 13:29
  • הי,

    שתי שאלות:

    1. כרגע אתם עדין חווים איטיות?

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


    אסף שלם
    יום ראשון 23 אוקטובר 2011 13:38
  • הי אסף,

    עדיין יש איטיות וכן - יש לנו רפליקציה על השרת.

    אתמול - במהלך היום - היו מס' בעיות אבל טיפלתי בכולן בערב וכרגע הכל מעודכן.

    יום טוב ותודה רבה על הסיוע,

    מיכל

    יום שני 24 אוקטובר 2011 06:17
  • הי מיכל,

    את עדין צריכה עזרה?

    נפתרה הבעיה?

    יום טוב, 


    אסף שלם
    יום שני 24 אוקטובר 2011 09:55
  • הי אסף,

    לצערי, הבעיה עדיין קיימת. ה- CPU מאוד גבוה.

    יום שני 24 אוקטובר 2011 10:16
  • הי,

    תפעילי פרופיילר ותבחרי את ה- Events:

    RPC:Completed

    SP:StmtCompleted

    SQL:BatchCompleted

    בעמודות:

    TextData, Duration, SPID, databasename, LoginName, reads and writes

    תפלטרי לפי CPU גדול מ- 300.

    במידה ויש הרבה כאלה תעלה את הפילטור ל- 500.

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

    Select text, command, r.cpu_time As RequestCpu, s.cpu_time As SessionCpu,  start_time, r.status,  database_id, s.login_name, s.total_elapsed_time      
    from sys.dm_exec_requests r
    Inner join sys.dm_exec_sessions s on r.session_id = s.session_id 
    Outer apply sys.dm_exec_sql_text(sql_handle)
    Where r.session_id != @@SPID and r.status != 'sleeping'  
    order by r.cpu_time desc

     


    אסף שלם
    יום שני 24 אוקטובר 2011 10:39
  • תודה.

    הנה התוצאה שהתקבלה מהרצת השאילתא:

    יום שני 24 אוקטובר 2011 11:45
  • הי,

    יש לך את התשובה ...

    התהליך שמריץ את Select yeud_code, yeud_desc ..... הוא זה שגורם ל- CPU גבוה.

    תעצרי אותו ותראי האם ה- Cpu utilization ירד.

     


    אסף שלם
    • סומן כתשובה על-ידי michal12 יום רביעי 26 אוקטובר 2011 10:57
    יום שני 24 אוקטובר 2011 12:28
  • אסף,

    תודה רבה רבה על העזרה.

    עזרת לי מאוד :-)

    מיכל

    יום רביעי 26 אוקטובר 2011 10:58
  • תודה רבה, אשמח לעזור גם בעתיד.

     


    אסף שלם
    יום רביעי 26 אוקטובר 2011 11:17