Asp.Mono על לינוקס? עוד לא...

ב־7.8.2008, מאת ארתיום; פורסם תחת: תכנה חופשית, אינטרנט, לינוקס, פיתוח, תכנה ומחשבים, CppCMS; ‏2 תגובות

תוך פיתוח CppCMS תמיד רצית לעשות השוואת ביצועים מול אחת הטכנולוגיות הפופולריות בתחום Web:‏ Asp.Net. מצאתי מערכת בלוגים: BlogEngine.Net‏ שתומכת ב: mono רצה גם על Linux ועובדת מול MySQL --- קרי כל מה שצריך כדי לעשות השוואה מול CppCMS.

ההתחלה הייתה די מבטיחה, הוראות ההתקנה לא היו מסובכות, מצאתי בלוג אחד אמתי שרץ על Ubuntu ו־Apache mod_mono, ראיתי הוראות התקנה עבור Ubuntu והתחלתי לעבוד.

קודם כל התקנתי mono 1.9.1 מ־backports של Etch. הבעיה הראשונה שנתקלתי בה, הייתה בעיה של התקנה שלי --- גרסת הקומפיילר לא תאמה גרסת mono. אחרי שפתרתי אותה, הצלחתי להריץ את היישום כאשר XML משמש כבסיס נתונים עבור הבלוג.

אחרי זה החלטתי להפעיל את MySQL. שוב בעיות, הפעם יצירת טבלאות --- מי שבדק את זה על MySQL ב־Windows לא לקח בחשבון שבלינוקס שמות הטבלאות הן case sensitive --- זה נפתר די בקלות. הבעיה השניה הייתה לחבר את MySQL ל־Mono.

דבר ראשון, התקנתי את ה־MySQL Connector\Net האחרון 5.2 וניסיתי להפעיל --- קיבלתי הודעות שגיאה שונות ומשונות. אחרי ששאלתי בפורום הפיתוח קיבלתי תשובה --- מסתבר שהייתי צריך לעשות כל מיני הגדרות נוספות עבור mono כדי שיטען את ה־backend. אבל בזה לא נגמרו הבעיות.

מסתבר שהגרסה 5.2 מסרבת לעבוד עם mono --- התקנתי גרסה 5.1 ואז סוף־סוף ראיתי את הבלוג.

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

<%@ OutputCache Duration="20" VaryByParam="None" %>

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

טוב, אני לא מבין כלום ב־ASP.Net אז בואו נעשה דף פשוט שמציג שעון ואם ברענון של הדף השעה לא תשתנה אז יש cache וכן ישתנה אז אין. הגעתי לעבודה, פתחתי שם VS2005 ויצרתי פרויקט קטן כזה. הוספתי כותרת --- עובד מצוין, בדקתי על IIS --- גם כן עובד.

הגעתי הביתה, לקחתי, את הפרויקט שיצרתי -- הרצתי על apache mod_mono --- לא עובד! הרצתי על ligttpd עם fastcgi לא עובד! השעון מתעדכן!

בנוסף, הרצתי בעבודה בדיקת עומסים קצרה וקיבלתי על מחשב Pentinum D 3G Dual Core כ־750 עמודים בשניה (עם ה־cache בלי זה היה משהו כמו 650) --- לא מרשים, אבל שיהיה. אז הרצתי את אותו הדבר בבית. בהתחלה 350 עמודים בשניה, אחר כך 300, אחר כך 200 אחר כך 150 --- WTF??? ונזכרתי בפוסט הזה שנתקלתי בו בדיון בפורום. אותה תופעה בדיוק --- רק שהיא לא תקפה רק ל־mod_mono אלא גם ל־fastcgi.

במילים אחרות: נכון להיום, mono עדיין לא פלטפורמה ל־asp.net תחת לינוקס. אני הולך לחפש משהו מבוסס jsp ו־Java --- גם היא JIT.

תגובות

נדב ויניק, ב־15.8.2008, 16:41

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

דבר שני, כאן הצגת כמה מאות עמודים, בעוד שבוורדפרס הצליח להוציא רק 7 עמודים לשניה, וגם תוספת הOpcode Cache עדיין לא התקרבה למה שהשגת כאן 100/13=7.6 http://art-blog.no-ip.info/newpress/blog/post/141

ארתיום, ב־15.8.2008, 21:38

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

שתי הערות:

  1. מערכת בלוגים זאת מערכת מאוד פשוטה ובד"כ בכל בלוג מופיעים אותם הדברים +/- כך שגם אם המערכת קטנה או גדול הן בסופו של דבר אותו אחד. בגלל זה יחסית קל להשוות אותן.
  2. הפעילות שבלוג צריך לבצע היא מאוד פשוטה: פנה לבסיס נתונים צור דף, הצג אותו (השתמש ב־cache במידת הצורך). זה לא משנה אם המערכת היא WP-Mu או בלוג אישי.
  3. באמת, תצורת ברירת מחדל של Be.Net לא בדיוק מתאימה למערכת בלוגים גדולה כי היא משתמשת ב־XML במקום DB. אבל את זה ניתן לשנות בהגדרות בקלות ולגרום לה לעבוד מול MySQL.

שוב, לא משנה עד כמה המערכת היא "Full Featured" אלא משנה עד כמה היא בנויה טוב.

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

תשמע, אני יודע ש־CppCMS הרבה יותר מהיר מ־PHP שהוא bytecode interpreted וגם כתוב בשפה בעלת Dynamic Typing -- שיש לה מחיר משלה.

מה שמעניין אותי זה לעשות בדיקה מול מערכת מבוססת JIT שנחשבת להרבה יותר מהירה: אפשר להשוות ל־Asp.Net או Java Servlets. כמובן ש־Asp.Net זה יותר מעניין בגלל שהיא מאוד נפוצה.

הוסף תגובה:

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

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

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

דפים

נושאים