Drupal gyorstárazási stratégiák

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

    Favorites, Groups & Events

    Drupal gyorstárazási stratégiák - Presentation Transcript

    1. Drupal gyorstárazási stratégiák Fehér János (Aries) 2009.10.29.
    2. 2009. 10. 29. Pár szóban az előadóról
      • 1998: <?php echo 'Hello World'; ?>
      • 2002: Mindworks-Networking http://mindworks.hu
      • 2005-: Csak Drupal alapú honlapok
      • Gtalk: [email_address] MSN: [email_address] Skype: aries_mindworks
    3. 2009. 10. 29. Mitől lassul?
      • Nem átgondolt működés / megvalósítás
      • A szoftverrendszer túl komplex
      • A PHP lassú
      • Rosszul beállított környezet (web, db...)
      • Kevés a vas
    4. 2009. 10. 29. Nem átgondolt működés $res_uid = db_query(„SELECT DISTINCT(uid) FROM {files}”); while ($uid = db_result($res_uid)) { $res_name = db_query(„SELECT name FROM {users} WHERE uid = %d”, $uid); while ($name = db_result($res_name)) { ... } } $res_uid = db_query(„SELECT DISTINCT(uid) FROM {files}”); while ($uids[] = db_result($res_uid)) { } $uid_list = implode(„,”, $uids); $res_name = db_query(„SELECT name FROM {users} WHERE uid IN (%s)”, $uid_list); while ($name = db_result($res_name)) { ... } VS
    5. onkoltseg.hu Nem átgondolt fejlesztés #2
      • Devel modul ( http://drupal.org/project/devel )
      • debug_backtrace() (PHP)
      • Valgrind / Cachegrind / Xdebug
      • Apache jMeter ( http://jakarta.apache.org/jmeter )
    6. 2009. 10. 29. A szoftverrendszer túl komplex
      • Devel modul ( http://drupal.org/project/devel )
      • debug_backtrace() (PHP)
      • Valgrind / Cachegrind / Xdebug
      • Apache jMeter ( http://jakarta.apache.org/jmeter )
      • Hook alrendszer
      • Theme alrendszer
      • Session-kezelés
      • Beállítások (variable_get / variable_set)
      • Útvonalálnevek
    7. 2009. 10. 29. A PHP lassú
      • KÉNYELMES , magasszintű programnyelv
      • Szkriptnyelv, folyamatosan újra és újra értelmezni kell
      • A feladathoz képest nagy a memóriaigénye
      • Lyukas a memóriakezelése
      • Hook alrendszer
      • Theme alrendszer
      • Session-kezelés
      • Beállítások (variable_get / variable_set)
      • Útvonalálnevek
    8. 2009. 10. 29. Rosszul beállított környezet
      • KÉNYELMES , magasszintű programnyelv
      • Szkriptnyelv, folyamatosan újra és újra értelmezni kell
      • A feladathoz képest nagy a memóriaigénye
      • Lyukas a memóriakezelése
      • Kevés memóriát használhat a MySQL (query_cache, innodb_buffer_pool_size stb.)
      • mysqltuner.pl, mytop
      • http://www.mysqlperformanceblog.com
      • MyISAM => InnoDB
      • Nincs index a megfelelő adatbázismezőkön (explain)
      • Apache => Nginx / Lighttpd
      • APC, Xcache, Zend Optimizer
      • Kevés memóriát használhat a MySQL (query_cache, innodb
      • MyISAM => InnoDB
      • Apache => Nginx / Lighttpd
    9. onkoltseg.hu Kevés a vas
      • KÉNYELMES , magasszintű programnyelv
      • Szkriptnyelv, folyamatosan újra és újra értelmezni kell
      • A feladathoz képest nagy a memóriaigénye
      • Lyukas a memóriakezelése
      • CPU – nem bővíthető (APC és társai)
      • Memória – korlátozottan bővíthető, gyors
      • Merevlemez – bővíthető, lassú (=> memória)
    10. onkoltseg.hu Gyorsítótárak összehasonlítása
      • KÉNYELMES , magasszintű programnyelv
      • Szkriptnyelv, folyamatosan újra és újra értelmezni kell
      • A feladathoz képest nagy a memóriaigénye
      • Lyukas a memóriakezelése
    11. 2009. 10. 29. Gyorsítótárak összehasonlítása
    12. 2009. 10. 29. A táblázatok értékelése
      • Az APC közvetlenül a megosztott (shm) memóriába ír
      • A megosztott memória mérete erősen korlátozott (4096, 32MB, 8GB)
      • Az APC nem képes adatot megosztani több géppel
      • Lyukas a memóriakezelése
      • Az első táblázat egy egyszerű PHP-lekérés 9 mezővel 3 táblakapcsolással
      • A második egy összetett jogosultságú Intranet 7000 felhasználóval.
      • Eredmény: torz, mert a merevlemez nagyon szűk keresztmetszet. (A Boost csalóka, ott 1 felhasználóról volt szó, de 670 aloldallal.)
    13. 2009. 10. 29. APC vs. Memcached
      • Az APC közvetlenül a megosztott (shm) memóriába ír
      • A megosztott memória mérete erősen korlátozott (4096, 32MB, 8GB)
      • Az APC nem képes adatot megosztani több géppel
      • A Memcached-példányokon több Drupal is osztozhat.
      • CPU – nem bővíthető (APC és társai)
      • Memória – korlátozottan bővíthető, gyors
      • Merevlemez – bővíthető, lassú (=> memória)
    14. 2009. 10. 29. Memcached beállítása
      • Az APC közvetlenül a megosztott (shm) memóriába ír
      • A megosztott memória mérete erősen korlátozott (4096, 32MB, 8GB)
      • Az APC nem képes adatot megosztani több géppel
      • Lyukas a memóriakezelése
      <?php $conf = array( 'cache_inc' => './sites/all/modules/memcache/memcache.inc', 'memcache_servers' => array( '192.168.1.1:11211' => 'default', '192.168.1.1:11212' => 'menu', '192.168.1.2:11211' => 'form', '192.168.1.2:11212' => 'page', '192.168.1.2:11213' => 'content'), 'memcache_bins' => array('cache' => 'default', 'cache_filter' => 'default', 'cache_form' => 'form', 'cache_page' => 'page', 'cache_content' => 'content', ); ?>
    15. Saját gyorsítótárazás <?php $conf = array( 'cache_inc' => './sites/all/modules/memcache/memcache.inc', 'memcache_servers' => array( '192.168.1.1:11211' => 'default', '192.168.1.1:11212' => 'menu', '192.168.1.2:11211' => 'form', '192.168.1.2:11212' => 'page', '192.168.1.2:11213' => 'content'), 'memcache_bins' => array('cache' => 'default', 'cache_filter' => 'default', 'cache_form' => 'form', 'cache_page' => 'page', 'cache_content' => 'content', ); ?> <?php function custom_sokatszamol_blokk() { $cache = cache_get('sajat:sokatszamol:'. $GLOBALS['user']->uid); if (!$cache) { // A sokat számoló függvényünk eredménye nincs a cache-ben $o = custom_sokatszamol(); // Meddig legyen biztosan gyorsítótárazva (*nix időbélyeg) $lejar = time() + (60 * 60); // óra cache_set('custom:sokatszamol', $o, 'cache', $lejar); } else { $o = $cache->data; } return $o; } ?> 2009. 10. 29.
    16. 2009. 10. 29. Mit érdemes gyorsítótárazni
      • NE: teljes oldalt, mert túl sok memórát „eszik”
      • IGEN: DB-intenzív függvények eredményét
      • IGEN: sokat változó, de lényegtelen adatú
      • DB-táblák (sessions, cache*)
      • IGEN: sűrűn olvasott, de ritkán írt táblák tartalmát (url_alias)
      <?php $conf = array( 'cache_inc' => './sites/all/modules/memcache/memcache.inc', 'memcache_servers' => array( '192.168.1.1:11211' => 'default', '192.168.1.1:11212' => 'menu', '192.168.1.2:11211' => 'form', '192.168.1.2:11212' => 'page', '192.168.1.2:11213' => 'content'), 'memcache_bins' => array('cache' => 'default', 'cache_filter' => 'default', 'cache_form' => 'form', 'cache_page' => 'page', 'cache_content' => 'content', ); ?>
    17. 2009. 10. 29. Tervezni, tervezni, tervezni! <?php function custom_sokatszamol_blokk() { $cache = cache_get('sajat:sokatszamol:'. $GLOBALS['user']->uid); if (!$cache) { // A sokat számoló függvényünk eredménye nincs a cache-ben $o = custom_sokatszamol(); // Meddig legyen biztosan gyorsítótárazva (*nix időbélyeg) $lejar = time() + (60 * 60); // óra cache_set('custom:sokatszamol', $o, 'cache', $lejar); } else { $o = $cache->data; } return $o; } ?> Fokozottan fontos a saját gyorstáraink elévülésének Végiggondolása. Ha egy node, álnév, beállítás stb. megváltozik, végig kell gondolni, hogy a cache-ben mely elemeket érinti! cache_clear_all('custom:sokatszamol:', 'cache', TRUE);
    18. Hovatovább?
      • Galera – szinkron replika InnoDB-hez közvetlen írás sorszintű zárolással, tranzakciós szinten
      • Redis – aka Memcached Killer félig állandó adatbázis (sorszintű írás a fájlrendszerre => kevés IO erőforrás. Pipelinening, összetett érték mezők.
      2009. 10. 29.
    19. 2009. 10. 29. Kérdés?
    20. 2009. 10. 29. Köszönöm a figyelmet!
    SlideShare Zeitgeist 2009

    + aries1980aries1980 Nominate

    custom

    114 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 114
      • 114 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

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

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories