Drupagora 2012 Optimisation performances Drupal

855 vues

Publié le

Optimisation des performances Drupal (Drupagora 2012)

Publié dans : Business
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
855
Sur SlideShare
0
Issues des intégrations
0
Intégrations
8
Actions
Partages
0
Téléchargements
8
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Drupagora 2012 Optimisation performances Drupal

  1. 1. Drupal Optimisation des performances Par Jean-Baptiste Guerraz (@skilld_fr) & Frédéric Marand (@OSInet)
  2. 2. « Frédéric, gérant OSInet, est spécialisé dans la sécurité et les hautes performances Drupal. »
  3. 3. « Jean-Baptiste, directeur technique de Skilld, est spécialisé dans la gestion technique des projets Drupal & mobile performants »
  4. 4. Desserrez les freins ! • « Le cache » de Drupal – Drupal 6 • Agressif ? – Drupal 7 • RTFS(ettings.php) • PHP – 5.3 – 5.4 • Cache d'opcodes – APC – Zend cache – Xcache – EAccelerator
  5. 5. Du cache pour PHP & Drupal > Décharger PHP • APC Requête Requête Lecture Opcodes dans APC Compilation PHP APC HIT MISS Exé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 d'accé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 • 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 n'est pas une base... Temps de réponse (ms)
  10. 10. Du cache pour PHP & Drupal > Décharger MySQL : cacher en base ? MongoDB ● REDIS ● MySQL ! ●
  11. 11. URL Optimiser les images > External cache • Une image externe = une image comme une autre Imagecache External Image Image (pas de résolution de domaine supplémentaire) Image / Image Cache > Image cache • Une taille = une image (pas de redimension via JS / CSS) Image > Optimize • Une image = une image optimisée en poids Image Image Image Image Optimize (pas d'image de 2Mb!!) Image Image Image Image
  12. 12. Optimiser les images > Sprites (et / versus) CSS Embed Image Image Image Image Image Image Image CSS Image Image Image Image Image Image Sprites Image Image Sprite Image Image Image Image Image CSS CSS Embed Images CSS Image Image Image CSS Image Image Image
  13. 13. CSS & JavaScript > Minimiser le nombre de requêtes •Agréger •Core aggregates •Core library •Advanced Aggregates (D7 en cours de portage) CSS CSS CSS JS JS JS CSS CSS CSS JS JS JS JS JS Core aggregates CSS > Minimiser le poids des fichiers •Minifier • Core library (JS only) •JSMin / CSS Compressor (JSMin+ / CSS Tidy) •Advanced Aggregates (D7 en cours de portage) •Compresser •Core aggregates •Nginx / Apache •Advanced Aggregates (D7 en cours de portage) CSS CSS Compressor / JSMin CSS CSS JS JS Core aggregates compress CSS CSS JS JS
  14. 14. Stockages de données > MySQL Et les autres ? ● PostgreSQL, SQLite ● SQL Server, Azure ● Oracle, DB2
  15. 15. Stockages de données > NoSQL •MongoDB •CouchDB, Riak •Redis •Tokyo / Kyoto •Les autres Adapter 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 site.com site.com Page affichée site.com HTML HTML static1.site.com CSS CSS static2.site.com CSS static3.site.com CSS JS Image CSS CSS site.com CDN URL Sharding JS JS site.com Image JS Image Image Image Temps Image 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 n'a 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 d'information relative a l'utilisateur. • 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 d'un JavaScript est bloquant Page affichée Page affichée site.com site.com HTML static1.site.com CSS JS HTML static1.site.com Image CSS JS Image static2.site.com CSS JS Image Head.js (ou Lab.js) static3.site.com CSS static2.site.com CSS Image Image static3.site.com CSS Image Temps Temps JS
  21. 21. Cache des pages & ressources > Varnish Anonymes vs authentifiés ● Expiration vs invalidation ● ESI ●
  22. 22. Analyse : caches Snapshot 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 d'exploitation > 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

×