none
Timeout מבסיס הנתונים RRS feed

  • שאלה

  • שלום לכולם,

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

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

    מדובר על SQL/Server 2005/8

    יום ראשון 23 אוגוסט 2015 12:11

תשובות

  • עדיף להפעיל פרופיילר בשלב ראשון רק על הפעלת פרוצדורות (כולל BATCH ACTIVATION ו RPC) לפי מה שידוע לך

    שים לב ל Duration או IO גבוהים

    בדיעבד אפשר להסתכל על SQLerrorlog לראות אם קרה משהו בזמן ה timeout וכן windows viwer או ב Default Profiler של ה SQLserver ש נמצא ב - C:\Program Files\Microsoft SQL Server\MSSQL10...\MSSQL\Log

     


    אורי כ.


    • נערך על-ידי Uri Klil hahoresh יום שלישי 01 ספטמבר 2015 08:35
    • סומן כתשובה על-ידי Netanelf יום שלישי 27 אוקטובר 2015 13:01
    יום שלישי 01 ספטמבר 2015 08:34

כל התגובות

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

    ניטור בשרתי SQL מבוצע בעזרת הפרופיילר ו extended events (שיטה יותר חדשה שבדרך כלל עדיפה ונועדה להחליף לחלוטין את הפרופיילר). בעקרון כדאי להתחיל מניטור של נעילות והמתנות, שיכול להוביל לכך ששאילות נאלצות להמתין. יש לזכור שחשוב לנטר בהתאם ללקוח שפונה למסד הנתונים. הרבה פעמים ההודעות הנ"ל אינן קשורות בכלום לשרת ה SQL אלא לאפליקציה (למשל time out של שרת ה IIS), או להגדרות ההתחברות של האפליקציה אל השרת.

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

    ** בכל מקרה כדאי להתחיל מבדיקה של מי מעלה את הודעת השגיאה (האם זו הודעה של השרת SQL או האפליקציה למשל) -> ולהציף בהתאם בלוגים של שגיאות.


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]



    יום ראשון 23 אוגוסט 2015 21:23
    מנחה דיון
  • עדיף להפעיל פרופיילר בשלב ראשון רק על הפעלת פרוצדורות (כולל BATCH ACTIVATION ו RPC) לפי מה שידוע לך

    שים לב ל Duration או IO גבוהים

    בדיעבד אפשר להסתכל על SQLerrorlog לראות אם קרה משהו בזמן ה timeout וכן windows viwer או ב Default Profiler של ה SQLserver ש נמצא ב - C:\Program Files\Microsoft SQL Server\MSSQL10...\MSSQL\Log

     


    אורי כ.


    • נערך על-ידי Uri Klil hahoresh יום שלישי 01 ספטמבר 2015 08:35
    • סומן כתשובה על-ידי Netanelf יום שלישי 27 אוקטובר 2015 13:01
    יום שלישי 01 ספטמבר 2015 08:34