Który Kod opcode PHP powinienem użyć, aby poprawić wydajność? [zamknięte]

Próbuję poprawić wydajność przy dużym obciążeniu i chciałbym zaimplementować buforowanie kodu opcode. Z której z poniższych opcji powinienem skorzystać?

Jestem również otwarty na wszelkie inne alternatywy, które wymknęły mi się spod radaru.

Aktualnie działa na stockowym Etchu Debiana z Apache 2 i PHP 5.2

[Aktualizacja 1]

HowtoForge installation links added

[Aktualizacja 2]

Na podstawie udzielonych odpowiedzi i opinii przetestowałem wszystkie 3 implementacje, używając następującego planu testów Apache JMeter w mojej aplikacji:

  • Login
  • Dostęp Do Strony Głównej

Przy 50 jednoczesnych połączeniach wyniki są następujące:

No Opcode Buforowanie
Brak Buforowania Kodu OPC

APC
APC

EAccelerator
eAccelerator

XCache
XCache

Wykres wydajności (mniejszy jest lepszy)
Wykres Wydajności

Z powyższych wyników wynika, że eAccelerator ma niewielką przewagę w wydajności w porównaniu do APC i XCache. Jednak najważniejsze z powyższych danych jest to, że każdy rodzaj buforowania kodu OPC daje ogromny wzrost wydajności.

Zdecydowałem się użyć APC ze względu na następujące 2 uzasadnienie:

  • Pakiet jest dostępny w oficjalnym repozytorium Debiana
  • więcej funkcjonalny panel sterowania

Podsumowując moje doświadczenie:

Łatwość instalacji: APC > eAccelerator > XCache
Wykonanie: eAccelerator> APC, XCache
Panel sterowania: APC > XCache > eAccelerator

Author: Neysor, 2008-08-26

7 answers

Myślę, że odpowiedź może zależeć od typu uruchomionych aplikacji internetowych. Sam musiałem podjąć tę decyzję dwa lata temu i nie mogłem zdecydować się między Zend Optimizer a eAccelerator.

Aby podjąć decyzję, użyłem ab (Apache bench) do przetestowania serwera i przetestowałem trzy kombinacje (zend, eAccelerator, obie uruchomione) i udowodniłem, że eAccelerator sam w sobie daje największą wydajność.

Jeśli masz luksus czasu, polecam zrobić podobne testy siebie i podejmowanie decyzji w oparciu o wyniki.

 16
Author: mercutio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-26 17:58:05

Używam APC, ponieważ był łatwy do zainstalowania w windows i rozwijam się na WAMP.

Integracja APC z PHP6 była omawiana tutaj: http://www.php.net/~derick/meeting-notes.html#add-an-opcode-cache-to-the-distribution-apc

A tutaj są wskazówki dotyczące instalacji APC na Debianie Etch: http://www.howtoforge.com/apc-php5-apache2-debian-etch

 5
Author: Ed Haber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-26 19:00:26

Uruchomiłem kilka benchmarków z eAcclerator, APC, XCache i Zend Optimizer(nawet jeśli Zend jest optymalizatorem, a nie cache).

Wyniki porównawcze http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png

Wynik: eAccelerator jest najszybszy (we wszystkich testach), następnie XCache i APC. (Ten na diagramie to liczba sekund na wywołanie strony głównej WordPress 10,000 razy).

Zend Optimizer zrobił wszystko wolniej (!).

 5
Author: BlaM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-20 21:50:57

Nie mogę ci powiedzieć na pewno, ale miejsce, w którym teraz pracuję, patrzy na APC i eAccelerator. Może to jednak wpłynąć na Ciebie - APC zostanie zintegrowane z przyszłym wydaniem PHP (podziękowania dla Eda Habera za link).

 4
Author: Thomas Owens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-26 19:01:43

Miałem dobry sukces z eAccelerator (Poprawa prędkości bez obciążenia jest zauważalna), ale XCache również wydaje się dość obiecujące. Możesz jednak uruchomić kilka wersji próbnych z każdym, Twoja aplikacja może skalować się inaczej na każdym.

 3
Author: Dana the Sane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-26 17:57:14

Używam XCache od ponad roku bez żadnych problemów.

Próbowałem przełączyć się na eAccelerator, ale skończyło się na kilku błędach segmentacji (to mniej wybaczanie błędów). Główną zaletą eAccelerator jest to, że nie jest to tylko pamięć podręczna kodów opcode, jest to również optymalizator.

Powinieneś W Pełni przetestować swoją aplikację z każdym z nich, aby upewnić się, że nie ma żadnych problemów, a następnie użyłbym apachebench, aby przetestować ją pod obciążeniem.

 1
Author: The How-To Geek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-26 18:02:19

Te dodatki historycznie wprowadziły wiele dziwnych błędów do wyśledzenia. Błędy te mogą powodować niespójne zachowania, których nie można łatwo zdiagnozować, ponieważ zależy to od stanu pamięci podręcznej.

Tak bym powiedział:

  1. nie używaj żadnego z powyższych. Zamiast tego Kup więcej cyny, jest to bardziej niezawodny (tj. wolny od błędów) sposób zwiększenia wydajności. Lub
  2. Idź z tym, który z powyższych jest najbardziej wytrzymały, po przetestowaniu spodni z aplikacji.

Ale Powiedziałbym:

  1. Upewnij się, że to naprawdę parsowanie kodu PHP powoduje problemy z wydajnością poprzez profilowanie aplikacji. Myślę, że jest bardzo prawdopodobne, że tak nie jest - w takim przypadku marnujesz swój czas (w rzeczywistości, wykorzystując swój czas negatywnie), instalując dowolny z nich.
 1
Author: MarkR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-16 21:24:12