Drupagora 2012 Optimisation performances Drupal

4,147 views

Published on

Optimisation des performances Drupal (Drupagora 2012)

Published in: Technology
1 Comment
1 Like
Statistics
Notes
  • That was a very good performance by JB. It gave me much understanding of some optimization technics. Also, I would like to add that one of the most important keys of optimization is 'doing things properly and lean' instead of 'trying to find similar modules and then modify their behavior'. The Drupal Lean development will elliminate many overwhelmings which usualy become a reason of loosing performance.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
4,147
On SlideShare
0
From Embeds
0
Number of Embeds
27
Actions
Shares
0
Downloads
65
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Drupagora 2012 Optimisation performances Drupal

  1. 1. Drupal Optimisation des performancesPar Jean-Baptiste Guerraz (@skilld_fr) & Frédéric Marand (@OSInet)
  2. 2. « Frédéric, gérantOSInet, est spécialisédans la sécurité et leshautes performancesDrupal. »
  3. 3. « Jean-Baptiste,directeur technique deSkilld, est spécialisé dansla gestion technique desprojets Drupal & mobileperformants »
  4. 4. Desserrez les freins !• « Le cache » de • PHP Drupal – 5.3 – Drupal 6 – 5.4 • Agressif ? • Cache dopcodes – Drupal 7 – APC • RTFS(ettings.php) – Zend cache – Xcache – EAccelerator
  5. 5. Du cache pour PHP & Drupal> Décharger PHP • APC Requête Requête Lecture Opcodes Compilation PHP dans APC HIT MISS APCExécution des opcodes Exécution des opcodes Compilation PHP Fin de requête Fin de requête Exécution des opcodes Fin de requête
  6. 6. Du cache pour PHP & Drupal> Décharger PHP • APC 3.1.9 // allocate one segment of 32Mb apc.shm_segments=1 apc.shm_size=32 // do not check if php file was updated apc.stat= 0 // never expire apc.ttl = 0 // use kernel anonymous memory apc.mmap_file_mask = /dev/zero. Pour les geeks : http://www.techpresentations.org/APC_at_Facebook
  7. 7. Et au-delà ?
  8. 8. On mesure !• Deux façons daccélérer – Gonfler le moteur – Réduire les causes de lenteur • Travailler moins • Travailler mieux• Facile ! – Tout cacher ? – NoSQL plus rapide ? – La « littérature » de fanboy/marketer – curl vs browser, ou back vs front
  9. 9. Du cache pour PHP & Drupal> Décharger MySQL • APC • Memcache Temps de réponse (ms) • Le cache Drupal est par défaut stocké en base de données • Déplacer le cache en mémoire (memcache) permet de retourner les données vite, mais surtout retire de la charge à la base • 1 instance memcache par cache (views, page, block, …) facilite la manipulation du cache. D6 vs D7 • Mais un cache nest pas une base...
  10. 10. Du cache pour PHP & Drupal> Décharger MySQL : cacher en base ? ● MongoDB ● REDIS ● MySQL !
  11. 11. URLOptimiser les images Imagecache External> External cache • Une image externe = une image Image Image comme une autre (pas de résolution de domaine supplémentaire) Image / Image Cache> Image cache • Une taille = une image (pas de redimension via JS / CSS) Image Image Image Image> Optimize • Une image = une image optimisée Image Optimize en poids (pas dimage de 2Mb!!) Image Image Image Image
  12. 12. Optimiser les images> Sprites (et / versus) CSS Embed Image Image Image Image Image Image Image CSS CSS Image Image Image Image Image Image Sprites CSS Embed Images Image Image CSS Image Image Sprite Image Image Image Image CSS Image Image Image Image Image
  13. 13. CSS CSS CSS JS JS JSCSS & JavaScript CSS CSS CSS JS JS JS> Minimiser le nombre de requêtes •Agréger •Core aggregates •Core library Core aggregates •Advanced Aggregates (D7 en cours de portage) CSS CSS JS JS> Minimiser le poids des fichiers •Minifier • Core library (JS only) CSS Compressor / JSMin •JSMin / CSS Compressor (JSMin+ / CSS Tidy) •Advanced Aggregates CSS CSS JS JS (D7 en cours de portage) •Compresser Core aggregates compress •Core aggregates •Nginx / Apache •Advanced Aggregates (D7 en cours de portage) CSS CSS JS JS
  14. 14. Stockages de données> MySQLEt les autres ?● PostgreSQL, SQLite● SQL Server, Azure● Oracle, DB2
  15. 15. Stockages de données> NoSQL •MongoDB •CouchDB, Riak •Redis •Tokyo / Kyoto •Les autresAdapter la techno aux données : •REDIS → Analytics, not logging •MongoDB → Flow, not transactions
  16. 16. Stockages de données> Quelles données NoSQL •D6 •Sessions, logs •D7 •Field Storage, Lock, Queue •Découpler les queues •D8 •Entity, File
  17. 17. Chargements & affichages des pages > Paralléliser les téléchargements •CDN (URL sharding) Page affichée Page affichéesite.com HTML site.com HTMLsite.com CSS static1.site.com CSS JS Image CSS CSSsite.com static2.site.com CSS JS Image JS CDN JS - URLsite.com static3.site.com CSS Image Sharding Image Image Image Temps Temps
  18. 18. Chargements & affichages des pages> Profiter un maximum du cache navigateur • CDN (far future) • Tant que l’agrégat CSS et/ou JS na pas changé, ne pas le recharger ! • Idem pour les images et autres ressources statiques !
  19. 19. Chargements & affichages des pages> Upload de cookie & ressources statiques • Une image, un fichier CSS, ou bien un fichier JS ne doivent pas nécessiter dinformation relative a lutilisateur. • Sur une connexion DSL standard, un cookie de 500 octets fait perdre environ une milliseconde par requête (100 images, 100 requêtes => 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. 20. Chargements & affichages des pages> Les JavaScripts, tendances & bloquants ! • De plus en plus de JavaScripts sont utilisés • Le chargement dun JavaScript est bloquant Page affichée Page affichéesite.com HTML site.com HTMLstatic1.site.com CSS JS Image static1.site.com CSS JS Imagestatic2.site.com CSS JS Image static2.site.com CSS JS Head.js (ou Lab.js) Imagestatic3.site.com CSS Image static3.site.com CSS Image Temps Temps
  21. 21. Cache des pages & ressources> Varnish● Anonymes vs authentifiés● Expiration vs invalidation● ESI
  22. 22. Analyse : cachesSnapshot control ● APC control panel ● Memcache ● control panel ● Drupal memcache_admin ● phpmemcacheadmin● History / baseline ● Munin, ... ● SaaS : NewRelic ● Events : Nagios, ...
  23. 23. Analyse : code = Profiling- XDebug & KcacheGrind- Zend Profiler- XHProf * avantages / limitations * modules devel, xhprof
  24. 24. Analyses : système dexploitation> strace • syscall trace : observer les appels système> Dtrace • Solaris • Observer tout dans le système
  25. 25. Analyses : base de données> Snapshots • relever les compteurs: phpmyadmin> Logging • Enregistrement • mysql slow queries • Percona vs Oracle • Munin... • Anemometer
  26. 26. Analyses : black box ou white box ?> tcpdump & wireshark • Observer les flux> grep, IDE • Observer les sources
  27. 27. Analyses> GTMetrix
  28. 28. Analyses> YSlow & Google Pagespeed
  29. 29. Analyses> Firebug & Chrome inspector & Dragon Fly (;))
  30. 30. Analyses> Whichloadsfaster.com
  31. 31. Merci !! Des questions ?:) Retrouvez cette présentation sur Slideshare, cherchez skilld_fr, jbguerraz ou osinet

×