Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Výkonnost webových aplikací

1,003 views

Published on

  • Be the first to comment

  • Be the first to like this

Výkonnost webových aplikací

  1. 1. Výkonnost webových aplikací Jan Tichý @jantichy
  2. 2. Sledujte nás• Prezentace: slideshare.net/mediocz• Twitter: @jantichy @mediocz @medioteka• Web: www.medio.cz blog.medio.cz akademie.medio.cz
  3. 3. Oblasti pro zlepšování výkonu• Návrh aplikace• Komunikace s klientem• Webový server a aplikace• Databáze• Cachování• Rozkládání zátěže
  4. 4. Návrh aplikace• Funkčnost aplikace• Volba vhodných prostředků• Architektura aplikace• Výkon versus přehlednost – Použít OOP? Jak moc dekomponovat? – Použít framework? Použít ORM?
  5. 5. Webový server• Hardware• Konfigurace serveru – KeepAliveTimeout, MaxClients, MaxRequestsPerChild – mod_deflate, mod_gunzip• Webserver, PHP – Apache, NGINX – APC/eAccelerator – opcode lokálně v paměti – HiPHoP – Zbytečné direktivy – magic quotes, register globals
  6. 6. Optimalizace aplikačního kódu• Kopírování dat vs. referencí• Kód se provádí v každém průchodu cyklem• Preferovat vestavěné funkce• Preferovat preg před ereg• Ukládání session do souborů je pomalé• Mikrooptimalizace - ternární operátor a další
  7. 7. Komunikace s klientem• Cachování, HTTP hlavičky – Last-Modified, If-Modified-Since, Expires – Etag, If-None-Match – Cache-Control, Vary• Klientské zpracování – Renderování v prohlížeči – Javascript – HTML a CSS, Sprites• Client-side aplikace
  8. 8. Databáze• Volba „databáze“ – MySQL, PostgreSQL, Redis, Mongo, CouchDB, ElasticSearch• Uzavírat spojení co nejdříve• Optimalizace dotazů - EXPLAIN, indexy• Používat insert s více hodnotami
  9. 9. Cachování• Na mnoha různých místech – databáze, agregované a předpočítané hodnoty, výsledky drahých operací a db dotazů, modelová data, šablony, fragmenty/bloky, celostránková cache• Různé nástroje – filesystém, Memcache/Membase, APC, Redis… – Varnish, NGINX+Memcache• Požadavky na architekturu aplikace• Problém s invalidací
  10. 10. Rozkládání zátěže• Výdejové front servery, statické servery, databázové servery, backend servery…• DNS roundrobin• Reverzní proxy – Varnish, Squid, Nginx• Uživatelská session data, dynamické bloky, A/B testování, trackovací parametry• Databáze: replikace, master-slave• Statický obsah: CDN
  11. 11. Další zdroje• PHP triky http://php.vrana.cz/• Školení výkonnosti webových aplikací http://www.michalspacek.cz/• Konzultace a analýzy k výkonnosti aplikací: http://www.medio.cz/
  12. 12. Díky za pozornost!Jan Tichý@jantichy

×