SharePoint 2010 Developer Dashboard
פעם שמעתי שיש פה ושם מפתח SharePoint אחד או שניים שלא טורחים לבדוק את ביצועי הקוד שלהם (כי אין כלים מתאימים או תירוצים כאלו) – אז אם יש אמת בשמועות האלו, SP2010 מציע פתרון די מקיף לאותו מיעוט זניח של מפתחים, הלא הוא Developer Dashboard. טוב, זה לא נראה "נוצץ" כמו ה-
Idera SharePoint performance manager (לשעבר Sonar) אבל זה בחינם!
אז מה הוא עושה?
-
פירוט (במילי-שניות) של זמן טעינת כל רכיב בדף (Get http)
-
פירוט של שאילתות ה- DB (כגון stored procedures)
-
פירוט של Service Calls ושל SPRequests
-
הצגת Webparts offsets (ראו בהמשך)
-
הצגת שגיאות והתראות
איך הוא נראה?
משהו כזה:
איך מפעילים אותו?
בתמונה למעלה ניתן לראות אייקון קטן בצד ימין למעלה שלחיצה עליו מפעילה את הרכיב בחצי המסך התחתון.
דא עקא, האייקון לא נמצא שם כברירת מחדל. לשם כך יש להפעיל פקודת stsadm או PowerShell (משום מה ההפעלה היא לא ע"י Feature באתר - אני צופה בעיות עם הרעיון הזה, כי זה אומר שמפתח יצטרך הרשאות מנהל חווה בשרת להריץ את הפקודה הזאת – אולי זה ייפתר בגירסת ה- RTM, או צד שלישי, נראה…)
יש לציין כי ישנם 3 מצבים של ה- DevDb:
-
מופעל (On) – במצב זה ה- DevDb מוצג תמיד בכל דף (לא ממש נוח)
-
מופעל עפ"י דרישה (OnDemand) – במצב זה מוצג אייקון קטן בראש הדף (ראו תמונה למעלה) וליצה עליו מפעילה/מכבה את ה- DevDb
-
לא מופעל (Off) – מצב זה נועד לבטל אחד משני המצבים הקודמים
שלושת המצבים האלו מוגדרים במאפיין בפקודה בהתאם:
stsadm
מופעל תמיד -
stsadm -o setproperty -pn developer-dashboard -pv On
הפעלה עפ"י דרישה -
stsadm -o setproperty -pn developer-dashboard -pv OnDemand
כיבוי -
stsadm -o setproperty -pn developer-dashboard -pv Off
PowerShell
[Microsoft.SharePoint.Administration.SPWebService]::
ContentService.DeveloperDashboardSettings.DisplayLevel = On/OnDemand/Off;
[Microsoft.SharePoint.Administration.SPWebService]::
ContentService.DeveloperDashboardSettings.Update();
וככה הוא נראה מקרוב בדף מייצג
השתמשתי בדף החביב עליי, המכיל 4 webparts שונים:
ולאחר הפעלת ה- DevDb מתקבל המסך הבא, המחולק לשמאל ולימין:
שמאל
ניתן לראות כי זמן הבקשה הכולל היה 715 מילי-שניות, והוא מחולק לעשרות תתי-בקשות במבנה היררכי
שימו לב היטב לשמות ה- events המוצגים – אלו נקראים "monitored scopes" ולכל רכיב ניתן להגדיר , ע"י שימוש ב- class החדש שנקרא SPMonitoredScope . ראו להלן מה נדרש לעשות בקוד שלכם כדי שגם הרכיב שלכם יופיע!
ימין
שימו לב לשורות המוקפות באדום – זהו זמן ה"Offset" של ה- webpart הכבדים יחסית - כלומר, כמה זמן עבר מרגע שנטען "רכיב האב" שלו, עד שהוא עצמו הואיל בטובו לעלות. הסיבה היא ש- WP אלו מכילים תמונות, זה הכל…
חוץ מזה, בראש הדף (בחלק "כללי") ניתן לראות את ה- correlation ID שמאפשר לאתר את ה- ULS Log המתאים!
מה שיפה הוא שלוחצים על אחד הקישורים הכתומים, נפתח חלון Tracing מפורט כמו זה:
מה עוד אפשר לעשות איתו?
דבר ראשון, לנצל את ה- class החדש שנקרא SPMonitoredScope – ברגע שמשלבים אותו בקוד, הרכיב יוצף ל-DevDb ותוכלו לנטר אותו, לדוגמה:
using (SPMonitoredScope GetListsBtnScope =
new SPMonitoredScope("GetListsBtn_Click"))
{
//your code goes here
(מקור: Steve Peschka)
דבר שני, בחור יצירתי בשם Jaap Vossers העלה כבר לפני כמה חודשים רכיב ויזואליזציה של ה- DevDb ויש לי תחושה שזה יהפוך לפריט חובה למפתחים (אותו מיעוט זניח שכיום טרם מבצע בדיקות ביצועים לקוד שלו…)
לעיון נוסף
- Razi bin Rais - פירוט + צילומי מסך, כולל דוגמה ל- Feature שיפעיל/יכבה את ה- DevDb
- Geoff Varosky - פירוט כולל הפעלה ע"י קוד, צילומי מסך והפעלת additional tracing