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 D7 vers Drupal 11
04/04/2024

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.

Voir l'article
Image
Formation Migration Drupal 10
03/04/2024

Du nouveau dans notre gamme de forma­tions Drupal

Maîtri­sez le CMS Drupal de bout en bout avec notre panel complet de forma­tions couvrant la migra­tion (notre petite dernière), l’ad­mi­nis­tra­tion, le déve­lop­pe­ment et l’in­té­gra­tion Drupal. Pour deve­nir expert, plon­gez dans l’uni­vers Drupal !

Voir l'article
Image
Encart article DrupalCamp 2024
06/03/2024

Makina Corpus, parte­naire du Drupal­Camp 2024

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

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus