2008-08-26 16 views
56

Ich versuche die Leistung unter hoher Last zu verbessern und möchte Opcode-Caching implementieren. Welche der folgenden sollte ich verwenden?Welchen PHP-Opcode-Cacher sollte ich verwenden, um die Leistung zu verbessern?

Ich bin auch offen für alle anderen Alternativen, die unter meinem Radar gerutscht.

läuft derzeit an einem Lager Debian Etch mit Apache 2 und PHP 5.2

[Update 1]

HowtoForge Installation Links hinzugefügt

[Update 2]

Based Auf die Antworten und das Feedback gegeben, habe ich alle 3 Implementierungen mit dem folgenden Apache JMeter Testplan auf meine Anwendung getestet:

  • Anmeldung
  • Access-Homepage

mit 50 gleichzeitigen Verbindungen, die Ergebnisse sind wie folgt:

Kein Opcode Caching
No Opcode Caching

APC
APC

eAccelerator
eAccelerator

XCache
XCache

Leistungsdiagramm (kleinere besser ist)
Performance Graph

Aus den obigen Ergebnissen eAccelerator hat einen leichten Vorsprung in der Leistung gegenüber APC und XCache. Von den oben genannten Daten ist jedoch am wichtigsten, dass jede Art von Opcode-Caching einen enormen Leistungsschub bewirkt.

Ich habe beschlossen, APC verwenden aufgrund der folgenden zwei Gründen:

  • Paket ist in den offiziellen Debian-Repository
  • Weitere funktionelle Bedienfeld

verfügbar meiner Erfahrung Fassen wir zusammen:

Einfache Installation: APC> eAccelerator> XCache
Leistung: eAccelerator> APC, XCache
Systemsteuerung: APC> XCache> eAccelerator

+0

Warum ist das geschlossen? – Pacerier

+0

APC hat einige Probleme wie Connection Reset! – Abadis

+0

@Pacerier Die Definition dessen, was * on-topic * ist, hat sich im Laufe der Jahre geändert, so dass dies "off-topic" wurde. – James

Antwort

16

Ich denke, die Antwort kann von der Art der Webanwendungen abhängen, die Sie ausführen. Ich musste diese Entscheidung vor zwei Jahren selbst treffen und konnte mich nicht zwischen Zend Optimizer und eAccelerator entscheiden.

Um meine Entscheidung zu treffen, habe ich ab (apache bench) den Server getestet und die drei Kombinationen (zend, eaccelerator, beide laufen) getestet und bewiesen, dass eAccelerator alleine die größte Leistung erbrachte.

Wenn Sie den Luxus der Zeit haben, würde ich empfehlen, ähnliche Tests selbst durchzuführen und die Entscheidung basierend auf Ihren Ergebnissen zu treffen.

+0

Warum wird HipHop nicht erwähnt? – Pacerier

+1

Da HipHop weder ein Opcode-Cache ist noch existierte, als diese Frage gestellt wurde. – BlaM

3

Ich hatte guten Erfolg mit eAccelerator (Geschwindigkeitsverbesserung ohne Last ist bemerkbar), aber XCache scheint auch ziemlich vielversprechend. Möglicherweise möchten Sie mit jedem Test einige Tests durchführen, aber Ihre Anwendung kann sich in jedem Fall unterschiedlich skalieren.

1

Ich benutze XCache seit mehr als einem Jahr jetzt ohne Probleme.

Ich habe versucht, zu eAccelerator zu wechseln, aber endete mit einer Reihe von Segmentierungsfehlern (es ist weniger fehlerverzeihend). Der große Vorteil von eAccelerator ist, dass es nicht nur ein Opcode-Cache ist, sondern auch ein Optimierer.

Sie sollten Ihre Anwendung mit jedem von ihnen vollständig testen, um sicherzustellen, dass es keine Probleme gibt, und dann würde ich Apachebench verwenden, um es unter Last zu testen.

1

Diese Add-ons haben in der Vergangenheit viele seltsame Bugs aufgespürt. Diese Fehler können zu inkonsistentem Verhalten führen, das nicht einfach zu diagnostizieren ist, da dies vom Cache-Status abhängt.

Ich würde also sagen:

  1. keine der oben anwenden. Kaufen Sie stattdessen mehr Zinn, es ist ein zuverlässigerer (d. H. Fehlerfreier) Weg zur Leistungssteigerung. ODER
  2. Gehen Sie mit demjenigen der oben genannten ist am robustesten, nachdem Sie die Hosen aus Ihrer Anwendung getestet.

Aber ich würde sagen:

  1. Stellen Sie sicher, es ist wirklich PHP-Code-Analyse, die Ihre Performance-Probleme verursacht durch Ihre Anwendung Profilierung. Ich denke, es ist sehr wahrscheinlich, dass es nicht ist - in diesem Fall würden Sie Ihre Zeit (tatsächlich, Ihre Zeit negativ produktiv zu verwenden) verschwenden, indem Sie irgendwelche von ihnen installieren.
+0

Wir können einige von ihnen verwenden, um Daten zwischenzuspeichern. Zum Beispiel kann APC sowohl Daten als auch Opcode zwischenspeichern. Aber ich stimme deinem letzten Satz zu: "Achte darauf, dass es wirklich PHP-Code-Parsing ist, was deine Leistungsprobleme verursacht" – Abadis