Drupal Optimisation des performancesPar Jean-Baptiste Guerraz (@skilld_fr) & Frédéric Marand (@OSInet)
« Frédéric, gérantOSInet, est spécialisédans la sécurité et leshautes performancesDrupal. »
« Jean-Baptiste,directeur technique deSkilld, est spécialisé dansla gestion technique desprojets Drupal & mobileperformant...
Desserrez les freins !• « Le cache » de          • PHP  Drupal                     – 5.3  – Drupal 6                 – 5.4...
Du cache pour PHP & Drupal> Décharger PHP   • APC      Requête                                     Requête                ...
Du cache pour PHP & Drupal> Décharger PHP   • APC 3.1.9                                        // allocate one segment of ...
Et au-delà ?
On mesure !• Deux façons daccélérer   – Gonfler le moteur   – Réduire les causes de lenteur      • Travailler moins      •...
Du cache pour PHP & Drupal> Décharger MySQL   • APC   • Memcache                                       Temps de réponse   ...
Du cache pour PHP & Drupal> Décharger MySQL :  cacher en base ?    ●     MongoDB    ●     REDIS    ●     MySQL !
URLOptimiser les images                                                                          Imagecache               ...
Optimiser les images> Sprites (et / versus) CSS Embed Image      Image Image Image           Image Image Image            ...
CSS   CSS    CSS       JS     JS   JSCSS & JavaScript                                                  CSS   CSS    CSS   ...
Stockages de données> MySQLEt les autres ?● PostgreSQL, SQLite● SQL Server, Azure● Oracle, DB2
Stockages de données> NoSQL  •MongoDB  •CouchDB, Riak  •Redis  •Tokyo / Kyoto  •Les autresAdapter la techno aux données : ...
Stockages de données> Quelles données NoSQL  •D6    •Sessions, logs  •D7    •Field Storage, Lock, Queue    •Découpler les ...
Chargements & affichages des pages       > Paralléliser les téléchargements          •CDN (URL sharding)                  ...
Chargements & affichages des pages> Profiter un maximum du cache navigateur    • CDN (far future)        • Tant que l’agré...
Chargements & affichages des pages> Upload de cookie & ressources statiques   • Une image, un fichier CSS, ou bien un fich...
Chargements & affichages des pages> Les JavaScripts, tendances & bloquants !    • De plus en plus de JavaScripts sont util...
Cache des pages & ressources> Varnish●  Anonymes vs authentifiés●  Expiration vs invalidation●  ESI
Analyse : cachesSnapshot control    ●      APC control panel    ●      Memcache        ●          control panel        ●  ...
Analyse : code = Profiling- XDebug & KcacheGrind- Zend Profiler- XHProf     * avantages / limitations     * modules devel,...
Analyses : système dexploitation> strace  • syscall trace : observer les  appels système> Dtrace  • Solaris  • Observer to...
Analyses : base de données> Snapshots  • relever les compteurs: phpmyadmin> Logging  • Enregistrement     • mysql slow que...
Analyses : black box ou white box ?> tcpdump & wireshark   • Observer les flux> grep, IDE   • Observer les sources
Analyses> GTMetrix
Analyses> YSlow & Google Pagespeed
Analyses> Firebug & Chrome inspector & Dragon Fly (;))
Analyses> Whichloadsfaster.com
Merci !! Des questions ?:)       Retrouvez cette présentation sur Slideshare,           cherchez skilld_fr, jbguerraz ou o...
Prochain SlideShare
Chargement dans…5
×

Drupagora 2012 Optimisation performances Drupal

4 198 vues

Publié le

Optimisation des performances Drupal (Drupagora 2012)

Publié dans : Technologie
1 commentaire
1 j’aime
Statistiques
Remarques
  • 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.
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
Aucun téléchargement
Vues
Nombre de vues
4 198
Sur SlideShare
0
Issues des intégrations
0
Intégrations
27
Actions
Partages
0
Téléchargements
65
Commentaires
1
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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

×