DCSIMG
עמוד הבית| חבילות השירות שלנו| חומר חופשי| צור קשר
ארכוויז מס’ 5 – למחזר או לא למחזר Application Pool?5 - בלוג היועצים של מיקרוסופט ישראל

בלוג היועצים של מיקרוסופט ישראל

ארכוויז מס’ 5 – למחזר או לא למחזר Application Pool?5

Alik Levin     ביצוע Recycle ל-Application Pool של IIS שלמעשה הוא w3wp.exe גורם ליצירת תהליך w3wp.exe חדש, אובדן כל ה-State ואיתחול של אפליקציה ASP.NET. כל זה גורם הן לחווית משתמש ירודה, הרי לא נעים לחטוף הודעת שגיאה באמצע מילוי טופס כלשהו, והן לפגיעה ב-Scalability, הרי עם יש ריבוי של Recycles וגידול בפניות של משתמשים אז זמני תגובה לא יהיו משהו בלשון המעטה.

אז למה יש את היכולת ב-IIS להגדיר סוגים שונים של Recycles?

הנה שלוש סיבות שאני מוצא הגיוניות:

  • האפליקציה מאוד “חולה” – גורמת לזליגת זכרון, Deadlocks – אך אין שליטה של קוד מקור
  • האפליקציה מואד “חולה” אך בדיוק עובדים על הפתרון למניעת זליגת זכרון או Deadlocks, בזמן פיתוח ה-Fix מגדירים בינתיים את Recycles
  • בוצע Capacity Planning לא נכון – מגדירים Recycle בזמן שמבצעים רכש של שרת או זכרון כדי להגדיל את קיבולת של האפליקציה.

הגדרת Recycle הוא Workaround ולא פתרון.

מה לדעתך סיבה נוספת להגדיר Recycle לאפליקציה?

חומר רלוונטי

 

שמי אליק לוין ואני מתרכז ב- Architecture, Security, and Performance באפליקציות Net.

בזמני הפנוי אני מפתח את עצמי בתחומים רבים אחרים.

 

This template is made with PracticeThis.com plugin for Windows Live Writer

פורסם: Nov 25 2009, 08:53 AM by alikl | with 13 comment(s) |

תוכן התגובה

Tal Ben-Shalom כתב/ה:

הגדרות ברירת מחדל...

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

# November 25, 2009 11:48 AM

alikl כתב/ה:

אההה!

הגדרות ברירת מחדל...

הרי זה מחדל!!! :)

# November 25, 2009 12:45 PM

orenk כתב/ה:

אליק - אז מה ההמלצה עבור תרחישים 2 ו- 3? איך מגיעים למסקנה שבוצע capacity planning לא נכון ו/או האפליקציה חולה?

# November 25, 2009 4:02 PM

alikl כתב/ה:

אורן,

השיטה היא להסתכל ב-Event Logs של Application ו-System. וחפש ארועים של W3SVC. אם יש, אז זה בדרך כלל ארוע של Recycle שמצביע או על מגבלות קיבולת או מחלה באפליקציה

רשימה של ארועים כאלה כאן:

support.microsoft.com/.../332088

# November 25, 2009 5:46 PM

Yuval Atzmon כתב/ה:

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

# November 26, 2009 9:49 AM

alikl כתב/ה:

יובל, אחלה טיפ!

# November 26, 2009 10:00 AM

martin77 כתב/ה:

הטיפ של יובל רלוונטי רק עם ה - balancer שלך מטפל ב - state או שאתה עובד עם SQLState והביצועים מספקים...

אני תמיד התייחסתי ל - recycle כאל "בת יענה".

ממש כמו לטמון את הראש בחול כדי להתעלם מהבעיה ולקוות שהיא תעבור.

# November 26, 2009 7:02 PM

מיכאל כתב/ה:

הי, האם הולכים לדון גם בנושאים אלו בסדנת ה- P&P שמתוכננת לפברואר ?

# November 26, 2009 8:41 PM

orenk כתב/ה:

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

מרטין - מסכים גם אתך. זה פתרון אבל רק זמני.

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

# November 26, 2009 9:04 PM

תום כתב/ה:

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

# November 27, 2009 4:03 PM

alikl כתב/ה:

תודה,

למה לדעתך זה לא חכם במיוחד?

# November 27, 2009 5:42 PM

משה כתב/ה:

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

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

# November 29, 2009 8:46 PM

alikl כתב/ה:

משה,

נגעת בנקודה מאוד חשובה - אך לדעתי יותר חשוב לגבי SESSION MANAGEMENT ולאו דווקא CACHE MANAGEMENT

מה דעתך?

# December 1, 2009 8:37 AM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 8 and 3 and type the answer here:


Enter the numbers above: