Question

Je suis en train d'améliorer les performances sous forte charge et aimerions mettre en place le cache d'opcode.Lequel des énoncés suivants dois-je utiliser?

Je suis aussi ouvert à d'autres alternatives qui ont glissé sous mon radar.

Actuellement en cours d'exécution sur un stock de la version Etch de Debian avec Apache 2 et PHP 5.2

[Jour 1]

HowtoForge installation de liens ajoutés

[Mise à jour 2]

Sur la base des réponses et des commentaires, j'ai testé tous les 3 implémentations à l'aide de la suite de Apache JMeter plan de test sur ma demande:

  • Connexion
  • Accéder À La Page D'Accueil

Avec 50 connexions simultanées, les résultats sont comme suit:

Pas De Cache D'Opcode
No Opcode Caching

APC
APC

eAccelerator
eAccelerator

XCache
XCache

Représentation Graphique de la Performance (petit, c'est mieux)
Performance Graph

À partir des résultats ci-dessus, eAccelerator a un léger avantage en performance par rapport à l'APC, XCache.Cependant, ce qui compte le plus de données ci-dessus est que toute sorte de cache d'opcode donne un formidable coup de pouce de la performance.

J'ai décidé d'utiliser APC, pour les raisons suivantes 2 raisons:

  • Package est disponible dans Debian officiel référentiel
  • Plus fonctionnel panneau de contrôle

Pour résumer mon expérience:

Facilité d'Installation:APC > eAccelerator > XCache
Performance:eAccelerator > APC, XCache
Panneau De Contrôle:APC > XCache > eAccelerator

Était-ce utile?

La solution

Je pense que la réponse peut dépendre du type d'applications web, vous êtes en cours d'exécution.J'ai dû prendre cette décision moi-même il y a deux ans et ne pouvais pas décider entre Zend Optimizer et eAccelerator.

Afin de prendre ma décision, j'ai utilisé ab (apache bench) pour tester le serveur, et testé les trois combinaisons (zend, eaccelerator, à la fois en cours d'exécution) et a prouvé que les eAccelerator sur son propre a le plus de rendement.

Si vous avez le luxe du temps, je vous recommande de faire les mêmes tests vous-même, et la prise de décision basée sur vos résultats.

Autres conseils

J'utilise APC, car il est facile à installer dans windows et je suis en développement sur WAMP.

L'intégration de l'APC dans PHP6 a été discuté ici:http://www.php.net/~derick/rencontre-notes.html#ajouter-un-opcode-cache-pour-la-distribution-apc

Et il y a des instructions sur l'installation d'APC sur Debian Etch ici:http://www.howtoforge.com/apc-php5-apache2-debian-etch

J'ai couru plusieurs des repères eAcclerator, APC, XCache, et Zend Optimizer (même si Zend est un optimiseur, pas un cache).

Les Résultats d'un Benchmark http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png

Résultat:eAccelerator est plus rapide (dans tous les tests), suivie par XCache et de l'APC.(L'un dans le diagramme est le nombre de secondes pour appeler un WordPress page d'accueil de 10 000 fois).

Zend Optimizer rendu le tout plus lent (!).

Je ne peux pas vous dire pour sûr, mais l'endroit où je travaille maintenant, est à la recherche à l'APC, eAccelerator.Toutefois, cela pourrait influer sur vous - APC sera intégré dans une future version de PHP (merci à Ed Haber pour le lien).

J'ai eu un bon succès avec eAccelerator (amélioration de la vitesse sans charge est notable), mais XCache aussi semble assez prometteur.Vous pouvez exécuter quelques essais avec chaque bien, de votre application à l'échelle de manière différente sur chaque.

J'ai été en utilisant XCache pour plus d'un an maintenant, avec aucun problème du tout.

J'ai essayé de passer à eAccelerator, mais a terminé avec un tas de défauts de segmentation (c'est moins tolérant des erreurs).Le principal avantage pour eAccelerator est qu'il n'est pas juste un cache d'opcode, c'est aussi un optimiseur.

Vous devriez entièrement tester votre application avec chacun d'eux pour s'assurer il n'y a pas de problèmes, et puis je l'utiliser apachebench de le tester sous la charge.

Ces add-ons ont historiquement introduit beaucoup de bugs bizarre de traquer.Ces bugs peuvent provoquer des comportements incohérents qui ne peut pas être diagnostiquée facilement car il dépend de l'état de la mémoire cache.

Donc, je dirais:

  1. N'utilisez pas de tout ce qui précède.Acheter plus de l'étain au lieu de cela, il est plus fiable (c'est à direexempt d'erreur) de l'augmentation de la performance.OU
  2. Aller avec celui des ci-dessus est le plus robuste, ayant testé le pantalon large de votre application.

Mais je dirais:

  1. Assurez-vous qu'il est VRAIMENT de code PHP à l'analyse qui est la cause de vos problèmes de performance par le profilage de votre application.Je pense qu'il est extrêmement probable qu'il ne l'est pas - dans ce cas, vous seriez de perdre votre temps (en fait, à l'aide de votre temps négativement de manière productive) par l'installation de l'un d'eux.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top