ביצועים של מערכת תוכן... מה נדרש באמת.

ב־30.10.2007, מאת ארתיום; פורסם תחת: אינטרנט, פיתוח, תכנה ומחשבים, WordPress בעברית; ‏0 תגובות

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

התשובה הנאיבית היא: אם אני מצפה 5000 ביקורים בשעה, אז היא צריכה לעמוד בכ-1.4 שאילתות בשניה. אבל התשובה הזו מטעה. הרי לא כולם מבקרים בצורה אחידה. בהחלט יכול לקרות שבאותה שניה כעשרה מבקרים ינסו לגשת לאותו הדף ו... לקבל זמן תגובה בלתי סביר. מצד שני, אם 1000 מבקרים ילחצו על אותו הקישור באותו רגע אז סביר להניח שגם מערכות תוכן חזקות במיוחד לא יעמדו בעומס. אפילו שההסתברו שזה יקרה היא מאוד נמוכה צריך לקחת אותה בחשבון. לכן, אנחנו צריכים להתבונן במספר פרמטרים:

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

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

נסמן ב-n את מספר במבקרים בפרק זמן T. נסמן ב-\Delta t את זמן ה-downtime שאנחנו יכולים להרשות לעצמנו. לכן, יש למצוא מספר העמודים בשניה k שמערכת התוכן מסוגלת לייצר כך שפונקציית ההסטברות המצטברת תהיה גבוהה מאחוז זמן ה-uptime שאנחנו רוצים.

P(N(t) \le k) = \frac{\Gamma (k+1,n/T)}{k!}>\frac{T-\Delta t}{T}

כש-N(t) זה משתנה מקרי שמייצג מספר המקרים בשניה כפונקציה של זמן.

טוב, אם מה שאמרתי זה סינית, אז נתחיל להביא דוגמאות:

נניח שקישור לכתבה בבלוג שלכם פורסמה ב-ynet בעמוד הראשי והוא מחזיק שם מעמד במשך שעה. נניח שכל עשירי מתושבי ישראל נכנס לפחות 5 פעמים ביום ל-ynet וכל עשירי מתוכם גם לוחץ על הקישור אז נקבל כ-21,000 מבקרים בשעה. נניח שזמן downtime שאתם יכולים להרשות לעצמכם הוא מקסימים 30 שניות לאותה שעת העומס. אז אם תחשבו אז הבלוג אמור לדעת לספק לפחות k=12 עמודים בשניה. כמובן, זה ביחד עם כל התוכן הסטטי שנמצא בעמוד הכתבה.

אם נתחשב בעובדה ש-WordPress יודע לייצר במקרה הטוב כ-4-5 עמודים בשניה, אז תבינו שאתם בבעיה -- אל תכתבו כתבות מעניינות :).

נקח דוגמה אחרת: אתר WhatsUP. קצב הכניסות בו הוא כ-110,000 מבקרים ביממה. אם אנחנו רוצים שהוא לא יהיה זמין מקסימום במשך דקה ביממה אז המערכת אמורה לדעת לייצר כ-6 עמודים בשניה (כולל תוכן סטטי).

ניתן לחשב את אחוז ה-uptime לפי הנוסחה שציינתי ע"י קוד matlab/octave:

gamma_inc(k+1,aver)/factorial(k)

כש-aver הוא מספר במקרים הממוצע בשניה.

הערה:

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

הוסף תגובה:

 
 כתובת דוא"ל לא תוצג
 

ניתן לכתוב תגובות עם שימוש בתחביר Markdown.

חובה לאפשר JavaScript כדי להגיב.

דפים

נושאים