2009-12-20 20 views
7

Używam memcache do buforowania obiektów, ale chciałbym dodać dodatkowo akcelerator kodu, taki jak APC. Ponieważ oba wymagają buforowania, nie jestem pewien, czy będą "deptać sobie nawzajem palce", tj. Nie jestem pewien, czy memcache jest już akceleratorem kodu OP.Czy mogę używać APC AND memcached na tym samym serwerze?

Czy ktoś może wyjaśnić? Chciałbym użyć ich obu - trochę dla różnych rzeczy. memcache do buforowania moich obiektów i APC do akceleracji kodu

Odpowiedz

4

Tak, możesz używać ich jednocześnie w tym samym czasie.

+0

@SankalpSingha dlaczego jest niedorzeczny? Czy nie powinny być używane w tym samym czasie? Chcę użyć APC do buforowania opcode i memcached dla mojej pamięci sesji php. Czy to nie jest dobry pomysł i dlaczego? –

+0

@SankalpSingha Niedorzeczna odpowiedź! Co powiesz na wyjaśnienie, dlaczego ... –

19

Memcache bardziej przypomina pamięć podręczną obiektów rozproszonych w porównaniu z czymś takim, jak APC lub XCache, który przechowuje kod bajtowy PHP w pamięci, aby uniknąć konieczności analizowania go za każdym razem. Ich główne cele są różne.

Na przykład, jeśli miałeś bardzo intensywne procesorowe zapytanie o bazę danych, o które często prosili ludzie, możesz buforować wynikowy obiekt w memcache, a następnie odwoływać się do niego zamiast powtarzać to zapytanie przez cały czas.

APC & XCache mają podobne funkcje buforowania obiektów, ale użytkownik jest ograniczony do komputera hosta. Co się stanie, jeśli chcesz, aby 10 różnych serwerów miało dostęp do tego jednego obiektu bez konieczności ponownego wykonywania zapytania dla każdego serwera? Po prostu skierujesz je do swojego serwera memcache i odejdziesz. Nadal będziesz czerpał korzyści, jeśli masz tylko jeden serwer, ponieważ korzystanie z memcache pomoże Ci skalować się w przyszłości, jeśli potrzebujesz rozgałęziać się do większej liczby skrzynek.

Najważniejszą rzeczą do rozważenia jest to, czy uważasz, że Twoja aplikacja będzie wymagać skalowania. Memcache ma więcej narzutów, ponieważ musisz użyć połączenia TCP, aby uzyskać do niego dostęp, w przeciwieństwie do wywołania funkcji dla wspólnych obiektów APC/Xcache.

Jednak Memcache ma następujące zalety:

  • szybciej niż dysk lub ponownie uruchomiony zapytania.
  • Skaluje do wielu serwerów.
  • Działa z wieloma różnymi językami, twoje obiekty nie są zablokowane tylko w PHP + APC/Xcache.
  • Wszystkie procesy/języki mają dostęp do tych samych obiektów, więc nie musisz się martwić, jeśli procesy potomne PHP mają pustą pamięć podręczną obiektów. To może nie być wielka sprawa, jeśli korzystasz z PHP-FPM.

W większości przypadków, polecam buforowanie obiektów w memcache jak to nie jest dużo trudniejsze & jest bardziej elastyczny w przyszłości.

Należy pamiętać, że jest to tylko dotyczące buforowania obiektów. Memcache ma NOT ma jakieś funkcje przyspieszenia kodu bajtowego lub PHP, dlatego też będę je uruchamiał równolegle z APC lub Xcache

+0

"Nadal możesz odnieść korzyść, jeśli masz tylko jeden serwer, ponieważ korzystanie z memcache pomoże Ci skalować się w przyszłości, jeśli chcesz rozgałęzić się do większej liczby skrzynek." - więc nie ma żadnych korzyści na jednym serwerze? – nickf

+0

@nickf, dodano więcej szczegółów do mojej odpowiedzi. – Klinky

+2

+1. Kolejny punkt do dodania: APC nie obsługuje wysokiej współbieżności ani memcached.Używamy zarówno memcached, jak i APC w produkcji, do przechowywania odpowiednich danych aplikacji - i rozważamy także rozpoczęcie korzystania z Redis (dla trwałości i operacji listowych). Na wysokich poziomach współbieżności każdy z nich jest dobry w pewnych rzeczach, których inni nie są. –

Powiązane problemy