Fichiers, APC ou Memcache ?

Tout d'abord, la première question que l'on peut se poser, c'est à quoi sert le cache ?

Le cache est destiné à servir des pages sans avoir besoin de les recalculer. Cette approche permet donc de beaucoup moins solliciter les serveurs car c'est bien sur le calcul des pages que les serveurs souffrent le plus.
En mettant donc en place un cache de 1 heure sur une page qui est visionnée 1000 fois par jour, vous allez donc permettre au serveur de calculer que 24 fois page au lieu de 1000 fois !! D'autant plus que la génération d'une page Web peut exécuter plus de 100 requêtes en base de données.
C'est là que l'on se rend compte pour des sites à fort trafic de l'importance de la mise en place d'un système de cache.

D'où l'importance de bien choisir la solution de cache.

  1. Cache par fichiers
    Cette solution est la plus fréquente et très souvent celle proposée par défaut avec les CMS du marché.
    Le principal avantage de cette méthode est qu'il n'est pas nécessaire paramétrer le serveur pour qu'elle puisse être mise en place. C'est donc la solution idéale si le site est sur un hébergement mutualisé. Maintenant, cette solution a également un gros inconvenants, lorsqu'elle est utilisée sur des sites avec un trafic assez fort, le serveur peut avoir des difficultés à faire les accès disque et par conséquent considérablement ralentir le chargement des pages. De plus, cette technique qui sollicite énormément les disques durs peut les endommager à l'usage.
    Cette méthode de cache est donc, d'après nous, adaptée pour améliorer les performances de site assez petits sans payer un hébergement trop cher mais n'est plus adaptée à partir du moment où le site commence à avoir un trafic trop élevé. Maintenant, nous n'avons pas effectué de tests avec ce système sur des serveurs avec disques SSD.
  2. Cache APC
    APC est un moteur de cache en mémoire RAM, il est installé sous forme d'extension PHP à installer sur le serveur. Il est automatiquement instancié avec chaque processus PHP.
    APC est une solution très performante de mise en cache qui permet de charger une page en quelques millièmes de secondes. Il permet également de mettre en mémoire les scripts du site (c'est ce que l'on appel du cache OPcode) ce qui permet aux processus PHP de se charger plus rapidement et d'utiliser moins de mémoire RAM.
    Coté défauts, APC a ses limites. Suite à nos tests, nous nous sommes rendu compte qu’il ne savait pas gérer plus de 512 Mo de cache, ce qui est énorme me direz-vous, sauf quand il s’agit d’un site avec beaucoup de contenu. De plus, APC étant lié aux instances PHP ne peut être utilisé sur un Cluster de serveurs. En effet, le cache risquerait d’être différent d’un serveur à l’autre et de provoquer des incohérences.
    Toujours d’après notre opinion, APC est donc une solution adaptée pour des sites qui commencent à générer pas mal de trafic mais qui n’ont pas un contenu de plusieurs milliers d’articles et qui restent sur un seul serveur.
  3. Cache Memcache
    Memcache est également un moteur de cache en mémoire RAM, il est cependant un peu plus compliqué à installer car il nécessite l’installation sur le serveur d’un application « Memcached » que l’on doit ensuite démarrer par port à écouter. Il nécessite également que l’on installe une extension PHP du même nom.
    Memcache une fois installé et paramétré est certainement le plus puissant des moteurs de cache comparés ici. En effet, grâce à son architecture « en chaine », il permet de répartir le cache sur plusieurs serveurs. Cette architecture le rend donc parfait pour des configurations en Cluster car l’on utilise le même serveur de cache pour tous les serveurs du site. De plus Memcache peut être utilisé avec MySQL pour mettre en cache les requêtes et améliorer les performances du serveur SQL. Nous avons déployé des sites Internet avec Memcache qui utilisaient jusqu’à 5 Go de cache sans que cela ne pose de soucis, c’est donc pour nous une solution très robuste.
    Une des fonctionnalités qui manque à Memcache, c’est le cache OPcode. Nous recommandons donc de déployer APC sur chaque serveur en plus pour gérer l’OPcode.

Vous l’aurez donc compris, pour nous Memcache est le moteur de mise en cache le plus performant. Il est cependant beaucoup plus compliqué à déployer que les autres solutions présentées. C’est pourquoi nous recommandons cette solution seulement pour les sites qui le nécessite.

Posté dans Performances par Xavier le 05 Juillet 2011

Commentaires

Bonjour Xavier et merci pour ces infos. Savez vous par hazard comment augmenter la taille du cache dans memcached Merci bonne journee
Portrait de Xavier

Bonjour Marc, La taille de cache disponible pour votre instance memcached est défini par l'argument -m lors du lancement du serveur. La valeur est défini en Mo. Cordialement, Xavier

j ai testé sur un serveur (smeserver) memchache et apc celà soulage les requetes pour etre efficasse il faut mieux un server avec beaucoup de ram.
Portrait de Johne631

Hi, Neat post. There's a problem with your site in internet explorer, would test this IE still is the market leader and a good portion of people will miss your excellent writing because of this problem. dkdbaceffbef
Portrait de sparrow

C'est toujours plaisant de lire des articles intemporels même si les technologies évolues, dans une moindre mesure cette article a toujours sa valeur informative dont je prends note. J'ai travaillé avec Memcached et APC, mais je n'ai pas eu le temps de faire des tests poussés hélas sur ces systèmes de caches qui avaient été très mal mis en place de part notre responsable technique (vue que c'était en plus un très mauvais programmeur cela s'expliquait). C'est intéressant de savoir réellement dans quel contexte APC a ses limites et à quel moment l'employer. Malgré les deux systèmes de cache mis en place notre plateforme multisite était désastreuse réellement et affichait un temps de monstrueux de latence alors que ce n'était que des petits sites vitrines recevant que très peu de trafique. Il faudra que je me penche plus sur les Clusters car c'est encore trop obscure pour moi pour l'instant. Merci pour vos informations.

Ajouter un commentaire

CONTACT

MMDev est située à St Laurent de Chamousset dans les monts du Lyonnais à 40 km de Lyon (Rhône 69) et à 45 Km de Saint Etienne (Loire 42).

Adresse
La Bâtie
69930 Saint Laurent de Chamousset