Makina Blog
Performance des caches Drupal
Aux #drupaldevdays 2015, @OSInet présente son module Heisencache.
Contexte
On constate que sur la plupart des sites, c'est la couche de front-end qui prend le plus de temps. Il n'est donc pas toujours nécessaire d'optimiser le back-end. Nous allons voir ici ce qu'il est possible de faire le cas échéant grâce à cette conférence où @OSInet présente son module de monitoring des caches Heisencache.
Plan de bataille
Confrontés à des problèmes de performance back-end, voici les 3 principales étapes à suivre :
- cache de page (opcode, CDN, Varnish)
- stockage (gestion des "slow queries", MongoDB, Redis)
- amélioration du cache
Le cache est une bonne chose, mais il ne faut pas en abuser. Par exemple, MongoDB n'est pas forcément plus rapide qu'un MySQL bien optimisé, et l'utiliser en plus amène des problèmes de clustering réseau ; un "miss" sur le cache est plus couteux qu'une absence complète de cache. Il faut donc mesurer.
Mesurer
Il y a autant d'utilisations de cache que de typologies de site :
- par exemple, pour un gros site de télévision sportive : peu visité la plupart du temps, il a par contre des pics de charge, où l'utilisation de même un cache d'1 seconde peut diminuer le load de 99% ;
- tandis que pour un petit site de télévision régionale : beaucoup de contenus, peu de visiteurs, le cache est à peine utilisé.
Que doit-on alors mesurer ? Il faut TOUT mesurer (y compris le bootstrap Drupal). Mais pour être capable de mesurer en production, il faut minimser l'invocation (CPU) et l'écriture des résultats (I/O).
Implémentation
Les détails d'implémentation sont consultables sur le diaporama de la conférence, ainsi que sur le code lui-même.
Pour résumer grossièrement :
- Pour Drupal 7 : un système d'événements personnalisé
- Pour Drupal 8 : L'EventDispatcher de Symfony 2.
Utilisation
Attention, Heisencache est un outil pour les développeurs, ce n'est pas un module "clé-en-main" qu'il suffit d'activer. On pourrait le comparer à tcpdump pour le réseau, il se contente de collecter des données. C'est ensuite à vous de traiter les données et de visualiser les résultats (d'implémeter un wireshark, pour poursuivre l'analogie).
Pour aller plus loin
On peut faire beaucoup de choses à partir de ce module : surveiller les caches utilisés pour implémenter un Cache Warmer adapté (voir l'implémentation d'AmazeeLabs, par exemple).
Actualités en lien
Migration d'un site Drupal 7 en Drupal 11
Trucs, astuces et "bouts" de code pour migrer votre site web de Drupal 7 à Drupal 11. Compte-rendu d'une conférence donnée au Drupalcamp Rennes 2024.
Makina Corpus, partenaire du DrupalCamp 2024
Nous sommes fiers d’annoncer que Makina Corpus est le sponsor du DrupalCamp à Rennes. Notre expert vous y propose une conférence « migrer de Drupal 7 à Drupal 10 ».