Drupagora 2012 Optimisation performances Drupal

download Drupagora 2012 Optimisation performances Drupal

If you can't read please download the document

description

Optimisation des performances Drupal (Drupagora 2012)

Transcript of Drupagora 2012 Optimisation performances Drupal

  • 1. Drupal Optimisation des performancesPar Jean-Baptiste Guerraz (@skilld_fr) & Frdric Marand (@OSInet)

2. Frdric, grantOSInet, est spcialisdans la scurit et leshautes performancesDrupal. 3. Jean-Baptiste,directeur technique deSkilld, est spcialis dansla gestion technique desprojets Drupal & mobileperformants 4. Desserrez les freins ! Le cache de PHPDrupal 5.3 Drupal 6 5.4 Agressif ? Cache dopcodes Drupal 7 APC RTFS(ettings.php) Zend cache Xcache EAccelerator 5. Du cache pour PHP & Drupal> Dcharger PHP APCRequte Requte Lecture OpcodesCompilation PHPdans APC HITMISSAPCExcution des opcodes Excution des opcodes Compilation PHP Fin de requteFin de requte Excution des opcodesFin de requte 6. Du cache pour PHP & Drupal> Dcharger PHP APC 3.1.9// allocate one segment of 32Mbapc.shm_segments=1apc.shm_size=32// do not check if php file was updatedapc.stat= 0// never expireapc.ttl = 0// use kernel anonymous memoryapc.mmap_file_mask = /dev/zero.Pour les geeks : http://www.techpresentations.org/APC_at_Facebook 7. Et au-del ? 8. On mesure ! Deux faons dacclrer Gonfler le moteur Rduire les causes de lenteur Travailler moins Travailler mieux Facile ! Tout cacher ? NoSQL plus rapide ? La littrature de fanboy/marketer curl vs browser, ou back vs front 9. Du cache pour PHP & Drupal> Dcharger MySQL APC Memcache Temps de rponse(ms) Le cache Drupal est par dfaut stock enbase de donnes Dplacer le cache en mmoire (memcache)permet de retourner les donnes vite, maissurtout retire de la charge la base 1 instance memcache par cache (views,page, block, ) facilite la manipulation ducache. D6 vs D7 Mais un cache nest pas une base... 10. Du cache pour PHP & Drupal> Dcharger MySQL :cacher en base ? MongoDB REDIS MySQL ! 11. URLOptimiser les imagesImagecacheExternal> External cache Une image externe = une image ImageImagecomme une autre(pas de rsolution de domaine supplmentaire)Image / Image Cache> Image cache Une taille = une image(pas de redimension via JS / CSS) ImageImage ImageImage> Optimize Une image = une image optimiseImage Optimize en poids(pas dimage de 2Mb!!)ImageImage ImageImage 12. Optimiser les images> Sprites (et / versus) CSS Embed ImageImage Image Image Image Image Image CSSCSSImage Image Image Image Image Image SpritesCSS Embed Images Image Image CSSImage ImageSpriteImage Image Image Image CSS Image Image ImageImage Image 13. CSS CSSCSS JS JS JSCSS & JavaScriptCSS CSSCSS JS JS JS> Minimiser le nombre de requtes Agrger Core aggregates Core libraryCore aggregates Advanced Aggregates (D7 en cours de portage)CSS CSS JS JS> Minimiser le poids des fichiers Minifier Core library (JS only) CSS Compressor / JSMinJSMin / CSS Compressor (JSMin+ / CSSTidy)Advanced AggregatesCSS CSS JS JS(D7 en cours de portage)CompresserCore aggregates compressCore aggregatesNginx / ApacheAdvanced Aggregates(D7 en cours de portage)CSS CSS JS JS 14. Stockages de donnes> MySQLEt les autres ? PostgreSQL, SQLite SQL Server, Azure Oracle, DB2 15. Stockages de donnes> NoSQLMongoDBCouchDB, RiakRedisTokyo / KyotoLes autresAdapter la techno aux donnes :REDIS Analytics, not loggingMongoDB Flow, not transactions 16. Stockages de donnes> Quelles donnes NoSQLD6Sessions, logsD7Field Storage, Lock, QueueDcoupler les queuesD8Entity, File 17. Chargements & affichages des pages > Parallliser les tlchargementsCDN (URL sharding)Page affiche Page affichesite.com HTMLsite.comHTMLsite.comCSSstatic1.site.com CSS JSImageCSSCSSsite.com static2.site.com CSSJS ImageJSCDN JS-URLsite.com static3.site.com CSSImage ShardingImageImageImage Temps Temps 18. Chargements & affichages des pages> Profiter un maximum du cache navigateur CDN (far future) Tant que lagrgat CSS et/ou JS na paschang, ne pas le recharger ! Idem pour les images et autresressources statiques ! 19. Chargements & affichages des pages> Upload de cookie & ressources statiques Une image, un fichier CSS, ou bien un fichier JS ne doivent pas ncessiter dinformation relative a lutilisateur. Sur une connexion DSL standard, un cookie de 500 octets fait perdre environ une milliseconde par requte (100 images, 100 requtes => 100 millisecondes de perdu)Module CDN & URL Sharding+$cookie_domain (settings.php) sur le domaine principal=Des domaines (pour les ressources statiques) sans cookies ! 20. Chargements & affichages des pages> Les JavaScripts, tendances & bloquants ! De plus en plus de JavaScripts sont utiliss Le chargement dun JavaScript est bloquant Page affichePage affichesite.comHTML site.com HTMLstatic1.site.com CSS JS Imagestatic1.site.com CSSJS Imagestatic2.site.com CSSJSImage static2.site.com CSS JS Head.js (ou Lab.js) Imagestatic3.site.com CSSImage static3.site.com CSS ImageTempsTemps 21. Cache des pages & ressources> VarnishAnonymes vs authentifisExpiration vs invalidationESI 22. Analyse : cachesSnapshot controlAPC control panelMemcachecontrol panelDrupal memcache_adminphpmemcacheadminHistory / baselineMunin, ...SaaS : NewRelicEvents : Nagios, ... 23. Analyse : code = Profiling- XDebug & KcacheGrind- Zend Profiler- XHProf * avantages / limitations * modules devel, xhprof 24. Analyses : systme dexploitation> strace syscall trace : observer lesappels systme> Dtrace Solaris Observer tout dans le systme 25. Analyses : base de donnes> Snapshots relever les compteurs: phpmyadmin> Logging Enregistrement mysql slow queries Percona vs Oracle Munin... Anemometer 26. Analyses : black box ou white box ?> tcpdump & wireshark Observer les flux> grep, IDE Observer les sources 27. Analyses> GTMetrix 28. Analyses> YSlow & Google Pagespeed 29. Analyses> Firebug & Chrome inspector & Dragon Fly (;)) 30. Analyses> Whichloadsfaster.com 31. Merci !! Des questions ?:) Retrouvez cette prsentation sur Slideshare, cherchez skilld_fr, jbguerraz ou osinet