PHP Scalability

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    PHP Scalability - Presentation Transcript

    1. PHP בקנה מידה גדול דוד טבצ ' ניקוב מרץ 2008
    2. מטהקפה
      • אתר לשיתוף וידאו בידורי קצר
      • 30 מיליון משתמשים יחודיים בחודש
      • עובדים ב - (Linux, Apache, MySQL, PHP) LAMP
      • PHP 5.2, MySQL5, memcached, RedHat Enterprise
    3. הסתל - מה ?
      • Scalability ( הסתלמות ) זה מאפיין של מערכת , רשת או תהליך , שמגדיר את היכולת של המערכת הנ " ל לגדול בצורה חלקה , בזמן , עלות , ויעילות מירבית .
      • גדילה אופקית ואנכית .
      • המערכת שלנו צריכה להיות מוכנה לגדול , גם בקוד וגם ברשת .
    4. גדילה בקוד
      • הדבר הראשון שצריך לבדוק , זה בעיות מהירות בקוד
    5. גדילה אנכית (scaling up)
      • כשהמערכת לא עומדת בעומס , מוסיפים עוד משאבים למכונה .
      • לא תמיד טוב , יקר , ובאיזשהו שלב בכלל לא אפשרי .
      • יכול להיות טוב בשלבים הראשונים של הגדילה , אבל לא טוב בטווח הארוך .
    6. גדילה אופקית (scaling out)
      • במקום להוסיף כוח למכונה הקיימת , הרבה יותר קל ובדרך כלל יותר זול , להוסיף עוד מכונות .
      • יותר מחשבים , הרבה יותר קשה לנהל , פיתוח מסובך יותר .
      • הקוד , מסדי הנתונים , ומבנה הרשת צריכים לאפשר מצב , שבו מכונות שונות משרתות משתמשים שונים , ולפעמים אפילו את אותם המשתמשים , בלי שהם ירגישו .
    7. אזורים של המערכת
      • האתר גדל , במקום 1,000,000 קריאות בחודש , עכשיו כבר יש 3,000,000 קריאות . מה עושים ?
      • מוסיפים שרתים !
      • מה צריך לייעל ?
        • את המערכת באופן כללי
        • מסד הנתונים
        • הקוד
    8. שלב ראשון - חלוקת עומסים
      • דבר ראשון – להוסיף עוד 2 שרתים .
      • להוסיף מחלק עומסים ( load balancer ) לפניהם , ולתת לו לשלוח קריאות כל פעם לשרת אחר , לשרת הכי פחות עמוס .
      • בעיה – אם כל קריאה מגיע לשרת אחר , איך זוכרים מה המשתמש עשה ? (state, sessions)
        • אפשר להגדיר ב - load balancer שכל קריאה מאותו לקוח תגיע לאותו שרת (stickiness)
        • אפשר לבזר גם את ה - session
    9. שלב שני – לעצור בדרך
      • בדרך כלל , החלק הכי איטי באפליקציית ווב , היא העמודים הדינאמיים .
      • אז זה רעיון טוב להעביר את הדברים הסטאטיים החוצה .
      • מה זה קבצים סטאטיים ?
        • JS
        • CSS
        • תמונות
        • אפילו תמונות דינאמיות
        • פלאש
    10. שלב שני – לעצור בדרך - המשך
      • מה אפשר לעשות עם דברים סטאטיים ?
        • SQUID ביציאה
        • שרת נפרד עם lighttpd , או thttpd .
        • CDN
    11. שלב שלישי – צווארי בקבוק
      • פרשן PHP
        • מטמון opcode
        • לשמור את ה - HTML בקבצים
      • מסד נתונים
        • לשמור את הנתונים במטמון
      • קבצים
        • מערכת הקבצים היא אחת המערכות הכי איטיות שיש
        • לטעון דברים לזכרון
    12. OPCode Cache
      • שומר גרסא מתורגמת של הקוד בזכרון , במקום להריץ את הפרשן כל פעם .
      • APC
        • (Drupal) – 604% מעל PHP
      • eAccelerator
        • 688% - מעל PHP
        • http://2bits.com/articles/benchmarking-apc-vs-eaccelerator-using-drupal.html
    13. שמירה של OB
      • public function init(){
      • $this->cacheKey = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
      • }
      • public function render() {
      • if ($this->cachedHTML == NULL) {
      • // output buffer are stackable!
      • ob_start();
      • // Render
      • $this->renderHTML();
      • // Save cache
      • $this->writeToCache();
      • }
      • // Finally display the HTML
      • echo $this->cachedHTML;
      • }
      • public function writeToCache() {
      • $this->cachedHTML = ob_get_contents();
      • ob_end_clean();
      • file_put_contents(“/var/www/cache/”.$this->cacheKey, $this->cachedHTML, FILE_TEXT | LOCK_EX);
      • }
      • public function readFromCache() {
      • $cacheFile = “/var/www/cache/”.$this->cacheKey;
      • $cacheTime = @filemtime($cacheFile);
      • if (time() - $cachetime < 600) {
      • $this->cachedHTML = file_get_contents($cacheFile, FILE_TEXT);
      • }
      • }
    14. מסדי נתונים
      • באיזשהו שלב , שרת DB אחד לא יחזיק מעמד מול כמות הקריאות שבאה מהשרתים
      • מה עושים ? גודלים אופקית
        • שרת אחד – מאסטר , לכתיבות
        • שרתים נוספים , רפליקות (replications) לקריאה בלבד
    15. רפליקות
      • לוקח זמן להתעדכן
      • עדיין מקבלות עומס מהמאסטר כשיש עידכונים
      • מה עושים כשצריך עדכון מיידי ? לכתוב וישר לקרוא ?
        • לכתוב במקביל גם לזכרון המטמון
    16. memcache
      • פותח בשביל LiveJournal , אבל היום חלק גדול מהאתרים הגדולים משתמשים בו , כמו Facebook, Wikipedia, Slashdot, Digg, Metacafe .
      • שומר נתונים בזכרון .
      • מיועד בעיקר לנתונים שבאים ממסד נתונים או ממקור נתונים אחר .
      • אך מתברר כיעיל גם במקרה של HTML , ואפילו שמירה של session .
      • http://www.danga.com/memcached/
    17. דוגמא של memcache
      • function get_foo (int userid) {
      • result = memcached_fetch(&quot;userrow:&quot; + userid);
      • if (!result) {
      • result = db_select(&quot;SELECT * FROM users WHERE userid = ?&quot;, userid); memcached_add(&quot;userrow:&quot; + userid, result);
      • }
      • return result;
      • }
    18. קבצים
      • בשביל למתוח את השרת כמה שאפשר , יש להמנה כמה שיותר מגישה למקמומות איטיים , כמו קבצים
      • להעביר את ה sessions למסד נתונים עם טבלה בזכרון , או ל memcache
      • להשתמש ב opcode cache כדי ש – PHP לא יגש לקבצים כל פעם
      • להעביר לוגים ל sqlite
    19. מעקב אחר המערכת
      • על כל מערכת - צריך להיות מעקב
      • יש מערכות שונות למעקב אחר אתרים
        • cacti
        • rrd
    20. קצת נתונים - flickr
      • LAMP + memcached + SQUID
      • יותר מ -4 מיליארד שאילתות ביום
      • יותר מ -400,000 תמונות נוספות כל יום
      • Memcached שמור נתונים ממסדי הנתונים , אחרי שפעם אחת העמוד נבנה , SQUID כבר מביא גרסה מוכנה שלו , עד העידכון הבא
    21. קצת נתונים - Wikimedia
      • LAMP + memcached + squid + lighttpd
      • האתר ה -10 בכמות הטראפיק באינטרנט
      • 30,000 שאילתות HTTP בשניה בשעות העומס
      • 55 שרתי squid
      • Lighttpd – משרת את התמונות והקבצים הסטאטיים
    22. קצת נתונים - Metacafe
      • LAMP + memcached
      • 30 מיליון משתמשים יחודיים בחודש
      • גם HTML וגם נתונים נשמרים ב - memcached
      • מספר שרשתי memcached יעודיים , שמשרתים את כל שרתי הווב
    23. שאלות ?

    + guest2b909dguest2b909d, 2 years ago

    custom

    1315 views, 1 favs, 5 embeds more stats

    Metacafe's PHP Scalability Lecture by David Tabachn more

    More Info

    © All Rights Reserved

    Go to text version
    • Total Views 1315
      • 1212 on SlideShare
      • 103 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 67
    Most viewed embeds
    • 93 views on http://php-israel.org
    • 5 views on http://lj-toys.com
    • 3 views on http://www.php-israel.org
    • 1 views on http://prematureoptimization.org
    • 1 views on http://localhost

    more

    All embeds
    • 93 views on http://php-israel.org
    • 5 views on http://lj-toys.com
    • 3 views on http://www.php-israel.org
    • 1 views on http://prematureoptimization.org
    • 1 views on http://localhost

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as innappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel

    Categories