Makina Blog

Le blog Makina-corpus

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@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 :

  1. cache de page (opcode, CDN, Varnish)
  2. stockage (gestion des "slow queries", MongoDB, Redis)
  3. 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

Image
Encart article DrupalCamp 2024
06/03/2024

Makina Corpus, parte­naire de la Drupal­Camp 2024

Nous sommes fiers d’an­non­cer que Makina Corpus est le spon­sor de la Drupal­Camp à Rennes. Notre expert vous y propose une confé­rence « migrer de Drupal 7 à Drupal 10 ».

Voir l'article
Image
DrupalCon Lille Sponsor
20/10/2023

DrupalCon Lille 2023 : quand Drupal prend (enfin ?) le virage de l'UX

Présentation rapide de sujets ergonomiques discutés lors de la première journée de la DrupalCon Lille 2023

Voir l'article
Image
DrupalCon 23 Encart
14/09/2023

Makina Corpus sponsorise la DrupalCon 2023 à Lille

La DrupalCon 2023 revient en France du 17 au 20 octobre et notre équipe y participe ! Pour cette nouvelle édition de la DruplaCon Fr, Makina Corpus s'engage auprès de Drupal et sponsorise l'événement 2023 à Lille.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus