DCSIMG
דפים כמעט סטטיים זוחלים. למה ? - מאחורי המסך

מאחורי המסך

משה למפרט, על תכנות מתקדם וביצועים ב-Web.

על הבלוג

עוד חדשות

אתרים שיש לי בהם יד ורגל

דפים כמעט סטטיים זוחלים. למה ?

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

אבל עדיין דף הבית שלו זחל, ואני נשאלתי – למה!

התחברתי לשרת שלו והרצתי DebugDiag, שאימת את ההשערה שלי. הסתבר כי הרבה מאוד בקשות שנתקעו למשך שניות אחדות, כלל לא הגיעו למנגנון של ASP ונתקעו הרבה קודם.

אז למה?

ל-ASP ול-ASP.net יש בתוך Application Pool בסך הכל 25 (ניתן לשינוי) Threadים בזמן נתון, כאשר כל אחד כזה מקבל דף, מעבד אותו ומשחרר. במידה ויש איטיות באתר ה-Threadים האלה מתמלאים מהר מאוד והבקשות הבאות פשוט מתפנות בהמתנה ל-Thread. בעצם, כאשר דף אחד או שניים זוחלים זו שיטה בטוחה לגרום לכל האתר לזחול ובהמשך להתקע.

הפיתרון לבעיה הספציפית ההיא היה הפיכת חלק מהדפים לדפים סטטיים לגמרי, html, שמתעדכנים דרך ממשק הניהול של האתר. הללו מסופקים ישירות על ידי IIS, ללא צורך בתיווכים מתיווכים שונים, ולכן מגיעים ישר ללקוחות. כפועל יוצא – הלחץ על ה-Threadים יורד במעט מה שמקל באופן כללי על העומס בשרת.

כצ'ופר, על הדרך, אנחנו מקבלים גם שיפור מאוד נחמד בביצועים, גם ברמת IIS וגם ברמת יתרונותיו של Cache.

פיתוח מהנה.

עוד באותו עניין:
איטיות בסביבת ייצור

תוכן התגובה

תומר כתב/ה:

במיוחד אם שומרים אותם ב SESSION

כי אז כל הקריאות של USER מסוים לאובייקט צריכות להתבצע ב THREAD שיצר את האובייקט

# November 7, 2009 3:30 PM

Pini Dayan כתב/ה:

או להתשמש ב Asyc pages איפה שצריך ולשחרר את ה thread שהם io bound.

# November 8, 2009 7:23 AM

יוני בר אילן כתב/ה:

האם אין דרך אוטומטית לעקוף את הענין?

# November 15, 2009 12:54 AM

Moshe L כתב/ה:

יש דרך להגדיל את מספר ה-Threadים במערכת, אבל גם לה יש השלכות שונות ובעייתיות.

# November 18, 2009 5:47 PM