Welchen PHP-Opcode-Cacher sollte ich verwenden, um die Leistung zu verbessern?[geschlossen]
-
09-06-2019 - |
Frage
Ich versuche, die Leistung unter hoher Last zu verbessern und möchte Opcode-Caching implementieren.Welche der folgenden sollte ich verwenden?
- APC - Installationsanleitung
- eAccelerator - Installationsanleitung
- XCache - Installationsanleitung
Ich bin auch offen für alle anderen Alternativen, die mir entgangen sind.
Läuft derzeit auf einem Standard-Debian Etch mit Apache 2 und PHP 5.2
[Update 1]
HowtoForge-Installationslinks hinzugefügt
[Update 2]
Basierend auf den Antworten und dem Feedback habe ich alle drei Implementierungen mit dem folgenden Apache JMeter-Testplan für meine Anwendung getestet:
- Anmeldung
- Greifen Sie auf die Startseite zu
Bei 50 gleichzeitigen Verbindungen ergeben sich folgende Ergebnisse:
Kein Opcode-Caching
APC
eAccelerator
XCache
Leistungsdiagramm (kleiner ist besser)
Aus den obigen Ergebnissen geht hervor, dass eAccelerator im Vergleich zu APC und XCache einen leichten Leistungsvorteil hat.Das Wichtigste an den oben genannten Daten ist jedoch, dass jede Art von Opcode-Caching zu einer enormen Leistungssteigerung führt.
Ich habe mich aus den folgenden zwei Gründen für die Verwendung von APC entschieden:
- Das Paket ist im offiziellen Debian-Repository verfügbar
- Funktionelleres Bedienfeld
Um meine Erfahrung zusammenzufassen:
Erleichterte Installation:APC > eAccelerator > XCache
Leistung:eAccelerator > APC, XCache
Bedienfeld:APC > XCache > eAccelerator
Lösung
Ich denke, die Antwort hängt möglicherweise von der Art der Webanwendungen ab, die Sie ausführen.Diese Entscheidung musste ich 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) zum Testen des Servers verwendet und die drei Kombinationen (zend, eaccelerator, beide laufen) getestet und bewiesen, dass eAccelerator allein die größte Leistung erbrachte.
Wenn Sie den Luxus der Zeit haben, würde ich empfehlen, ähnliche Tests selbst durchzuführen und die Entscheidung auf der Grundlage Ihrer Ergebnisse zu treffen.
Andere Tipps
Ich verwende APC, weil es einfach unter Windows zu installieren war und ich auf WAMP entwickle.
Die Integration von APC in PHP6 wurde hier besprochen:http://www.php.net/~derick/meeting-notes.html#add-an-opcode-cache-to-the-distribution-apc
Und hier finden Sie Anweisungen zur Installation von APC unter Debian Etch:http://www.howtoforge.com/apc-php5-apache2-debian-etch
Ich habe mehrere ausgeführt Benchmarks mit eAcclerator, APC, XCache, und Zend Optimizer (obwohl Zend ein Optimierer und kein Cache ist).
Ergebnis:eAccelerator ist am schnellsten (in allen Tests), gefolgt von XCache und APC.(Der Wert im Diagramm gibt an, wie viele Sekunden eine WordPress-Homepage 10.000 Mal aufgerufen wird.)
Zend Optimizer hat alles langsamer (!) gemacht.
Ich kann es Ihnen nicht genau sagen, aber der Bereich, in dem ich derzeit arbeite, beschäftigt sich mit APC und eAccelerator.Dies könnte Sie jedoch beeinflussen – APC wird in eine zukünftige Version von PHP integriert (Danke an Ed Haber für den Link).
Ich habe mit eAccelerator gute Erfolge erzielt (Geschwindigkeitsverbesserung ohne Last ist spürbar), aber XCache scheint auch ziemlich vielversprechend zu sein.Möglicherweise möchten Sie mit jedem einige Tests durchführen, Ihre Anwendung kann jedoch bei jedem unterschiedlich skaliert werden.
Ich verwende XCache jetzt seit mehr als einem Jahr ohne jegliche Probleme.
Ich habe versucht, auf eAccelerator umzusteigen, bin dabei aber auf eine Reihe von Segmentierungsfehlern gestoßen (es ist weniger fehlerverzeihend).Der Hauptvorteil von eAccelerator besteht darin, dass es nicht nur ein Opcode-Cache, sondern auch ein Optimierer ist.
Sie sollten Ihre Anwendung mit jedem einzelnen davon vollständig testen, um sicherzustellen, dass es keine Probleme gibt, und dann würde ich apachebench verwenden, um sie unter Last zu testen.
Diese Add-ons haben in der Vergangenheit viele seltsame Fehler verursacht, die es aufzuspüren gilt.Diese Fehler können zu inkonsistentem Verhalten führen, das nicht einfach diagnostiziert werden kann, da es vom Zustand des Caches abhängt.
Also würde ich sagen:
- Verwenden Sie keines der oben genannten Mittel.Kaufen Sie stattdessen mehr Dose, das ist zuverlässiger (d. h.fehlerfreie) Möglichkeit zur Leistungssteigerung.ODER
- Entscheiden Sie sich für die robusteste Variante, nachdem Sie die Hose bei Ihrer Anwendung getestet haben.
Aber ich würde sagen:
- Stellen Sie sicher, dass es WIRKLICH das Parsen des PHP-Codes ist, das Ihre Leistungsprobleme verursacht, indem Sie ein Profil Ihrer Anwendung erstellen.Ich halte es für äußerst wahrscheinlich, dass dies nicht der Fall ist. In diesem Fall würden Sie Ihre Zeit verschwenden (eigentlich würden Sie Ihre Zeit negativ und produktiv nutzen), wenn Sie eines davon installieren würden.