וורדפרס וביצועים

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

עודכן ב־21 ביולי 07.

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

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

על מנת לסביר במה מדובר אני אתן מספרים, כמה שאילתות בשניה, שרת Athlon XP 64bit 3000 עם 1G של זכרון מסוגל לספק:

  • עמוד ראשי -- 4.7 שאילתות לשניה.
  • מאמר ממוצע -- 3.7 שאילתות לשניה.

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

לכן בדקתי תוסף WP Cache 2 שאמור לפתור את הבעיה. התקנה הייתה טיפה מסובכת, דרשה יצירה של symbolic link -- שלא ברור אם אפשרות כזו זמינה עבור שירותי אירוח זולים, אבל כך או אחרת, התוסף הופעל. והנה התוצאות:

  • עמוד ראשי -- 170 שאילתות לשניה, כאשר דף HTML סטטי בגודל זה עומד בכ־340 שאילתות לשניה.
  • מאמר ממוצע -- 150 שאילתות לשניה, כאשר דף HTML סטטי בגודל זה עומד בכ־270 שאילתות לשניה.

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

התוסף עובד רק כאשר אפשרות דחיסת דפים עם gzip מבוטלת, כך שאם צוואר הבקבוק משמעותי הוא רוחב הפס (כמו אצלי) -- אולי עדיף לעבוד ללא התוסך אבל להפעיל דחיסה.

הבדיקות בוצעו ברשת מקומית בעזרת כלי "apache benchmarks" בצורה הבאה:

ab -C 5 -n 100 URL

רוחב הפס בתור צוואר הבקבוק:

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

אם ראיתי ש-WordPress מסוגל לעמוד ב-3.7 שאילתות בשניה עבור מאמר בגודל כ-37K אז רוחב בפס הנדרש במקרה זה הוא כ-140Kb/s. אם מפעילים דחיסת gzip אז גודל העמוד קטן עד ל-10.3K אז רוחב הפס הנדרש יורד לכ-40Kb/s שזהו רוחב הפס עבור העלאה שזמין אפילו היום אצל ספקי אינטרנט ביתי רגילים. לכן דחיסת gzip יכולה משמעותית לשפר את ביצועים של המערכת ברשת עם רוחב פס נמוך יחסית. לדוגמה, במקרה של שרת ביתי, עם רוחב הפס הנמוך ביותר שזמין אצל ספקים 12Kb/s זה משפר את זמן טעינת העמוד מ-3 שניות עד לשניה אחת שזה הבדל משמעותי.

הפעלה של mod_gzip עבור apache1 או mod_deflate עבור apache2.

יש אפשרות גם להפעיל דחיסת gzip ברמת השרת -- mod_gzip כך שהוא יהיה מסוגל לעבוד עם WP Cache 2. מה שיאפשר לקבל שיפורים גם עבור רוחב פס נמוך עם דחיסת gzip ו-caching.

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

הפעלה של האופציה הזו מאפשרת דחוס דפים. יש ירידה קלה בביצועים לכ-120--130 שאילתות בשניה במקום 150/170 ללא mod_deflate. אבל בקצבים אלו יהיה יתרון משמעותי בהורדת רוחב הפס.

תגובות

גילפ, ב־18.7.2007, 23:14

הלוואי על כולנו צרות כאלו....

nadavvin נדב, ב־18.7.2007, 23:35

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

זה הרי לא בעיה להבין טופס פשוט ולהבין איך לשלוח מה.

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

ארתיום, ב־18.7.2007, 23:40

נדב, ברור שיש מקרים בהם caching לא עובד... אבל צריך לשפר את המקרה השכיח ביותר (כמו ביקור בדף ראשי/ביקור במאמר) על מנת לשפר את המערכת פלאים.

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

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

תחשוב על blogli - האם אפשר לעבוד שם ללא caching?

אורח, ב־31.12.2007, 15:52

ארתיום צודק ב100%!
תודה.

הוסף תגובה:

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

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

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

דפים

נושאים