Comment optimiser vos projets en Plone


Joel Burton nous présente un sujet qui lui est cher: comment optimiser les performances de Zope.

Je vous fait une revue rapide des points abordés sans vouloir faire un résumé.

Optimisation du code

Il ne faut pas optimiser le code prématurément !

Il est quasiment impossible de prévoir les goulots d’étranglement avant d’être en production.

Les outils de base pour évaluer les performances de votre site:

CallProfiler,PTProfiler, ZopeProfiler

Ces outils, couplés avec apache bench, vont identifier ces goulots d’étranglement à chaque niveau du framework:

  • CallProfiler identifie combien de fois chaque template/script est appelé par page
  • PTProfiler identifie le temps passé sur chaque appel à l’intérieur d’un page template
  • ZopeProfiler identifie de manière plus profonde le temps passé par zope sur chaque appel de fonction

La montée en puissance: Cluster ZEO

Il est très fortement conseillé de toujours avoir au moins un serveur ZEO avec un client. En cas de besoin il est facile de rajouter un 15 minutes au lieu d’avoir à créer l’environnement complet. De plus les clients ZEO peuvent être installés sur autant de serveurs/Core/CPU que nécessaire avec la règle d’avoir au moins un client par Core/CPU.

Par défaut Zope lance 4 processus, ce qui veut dire 4 requêtes servies en parallèle. Le but n’est pas de servir le plus de requêtes avec un seul serveur, mais de servir chaque requête dans de bonnes conditions. Dans ce cas, il est préférable de n’utiliser que 2 processus par client ZEO et de multiplier les clients ZEO sur chaque serveur. Le coût en RAM sera à peine plus élevé et les performances seront bien meilleures.

La gestion du Cache dans ZEO

La priorité va aux skins et aux objets en cours d’utilisation. Les clients utilisent un cache disque pour minimiser les appels aux serveurs ZEO stockant les données.

L’utilisation des RAMCache

Pour optimiser le chargement des éléments présent dans les skins il est possible d’utiliser un ou plusieurs RAM Cache Manager sur votre serveur Zope. Il est important de créer un RAM Cache Manager par scénario de cache (filtrage, durée, etc). Il est alors possible de choisir une stratégie de cache pour chaque élément de skin.

Les RAMCache stockent les valeurs passées en paramètres et sont capables d’intercepter les requêtes identiques pour éviter un nouveau calcul.

Pour ne pas cacher la même valeur AUTHENTICATED_USED comme clé de filtrage. en fait, il est possible d’utiliser n’importe quelle clé de la requête en cours pour filtrer les requêtes.

Le nouveau venu: memoize

C’est un système de cache uniquement disponible pour les vues venant de Zope3 (BrowserView).

Les stratégies qui fonctionnent: le micro-cache

Un cache de 5 à 10 secondes peut éviter 500 requêtes !

Le plus gros risque du cache est d’afficher une valeur invalide: il faut affiner la durée des caches au cas par cas.

Les proxysles plus courant:

  • Apache: très bon en redirection mais il est impossible d’invalider un cache.
  • Squid: moyen en redirection mais l’invalidation fonctionne
  • Varnish: très prometteur mais n’est pas supporté sous windows et manque de documentation

La configuration la plus courante est Apache <-> Squid <-> Zope. Le gros avantage est de gérer le cache proxy en dehors de Zope mais cela demande plus de connaissances.

CacheFu

Ce produit est disponible dans Plone 2.5 et Plone 3.0 mais n’est pas installé par défaut. Il faut copier les produits qu’il comprend dans votre répertoire Products pour les activer.

Il a été conçu pour gérer le besoin les plus courants dans plone (le cache utilisateur par exemple) et de déléguer une partie du cache au proxy web.

C’est le produit utilisé sur http://plone .org /products pour améliorer les performances.

Il est très complet donc sa configuration peut demander un affinage permanent.

Après ce temps dans les profondeurs des salles de conférences, il est temps d’aller profiter du soleil napolitain. 😉

One Response to Comment optimiser vos projets en Plone

  1. encolpe dit :

    Après cinq minutes de pause, encore une dernière conférence pour la journée.
    Manifestement les mêmes thèmes vont être abordés…

%d blogueurs aiment cette page :