Memcached – jak zainstalować i po co?

Memcached czyli mały wspomagacz pamięci serwera

Ostatnio trafiłem na taki ciekawy sofcik jak memcached i pomyślałem, biorąc pod uwagę, że obecnie wszystko się cache’uje jak leci, warto by dać szansę temu czemuś i wdrożyć sobie to na serwer. W teorii instalacja jest banalna… oczywiście jak to z linuxami bywa teoria czasami jest daleka od rzeczywistości. 🙂

Instalacja na serwerze z DA

Zgodnie z wszelkimi wskazówkami, które udało mi się znaleźć w sieci instalka Memcached na Debianie to „bułka z masłem” i właściwie nie ma co się rozpisywać. Oczywiście jeżeli mamy czyściutką maszynę, z samym systemem to pewnie tak jest… no i co ważne bez np. panelu typu DirectAdmin, który większość rzeczy ustawia sobie po swojemu zmieniając wszystkie logicznie poukładane w Debianie ścieżki na swoje. No ale jako, że serwer posiada ten panel, stwierdziłem że nie takie rzeczy się już robiło w Debianie więc i z tym nie będzie problemu…

Teoretycznie instalacja memcached na serwerze, który posiada zainstalowany DA, powinna wyglądać tak:

No i oczywiście dodać w php.ini linijkę w postaci: extension=memcache.so

A na koniec zrestartować Apache’a, wcale nie w standardowy sposób /etc/init.d/apache2 restart, tylko pamiętamy że jest panel DA więc:

A następnie wystartować samo memcached komendą:

Proste? Proste.

Działa? Ni chuja.

No i to jest właśnie urok DA na serwerze. 🙂

Uruchomienie Memcached

Jako, że nie lubię jak mi coś nie działa, w szczególności wtedy kiedy chcę, żeby działało 🙂 to stwierdziłem, że zaraz się „rozejrzę” po różnych forach, po konfigu DA, po plikach systemowych i od ręki to sobie poprawię. Dla jasności, sam demon się odpalił tylko, że nic kompletnie to nie zmieniało. No ale skoro demon działa, to sobie myślę – pewnie działa tylko nie ustawiłem jeszcze nic co by go wykorzystywało.

Zatem sprawdzam czy to chodzi prostą komendą:

a następnie jeszcze

Komunikat jest, że coś tam sobie działa, no więc jedziemy dalej. Trzeba przetestować…

Jak pomyślałem tak zrobiłem, utworzyłem sobie pliczek w php z zawartością:

Co otrzymałem dzięki temu? Prostą informację, że chociaż memcached teoretycznie sobie chodzi w tle, przynajmniej z założenia, to i tak gówno robi bo plik mi zwraca wartość błędu i nie umie tego przetworzyć.

Zatem co można zrobić w takiej sytuacji… „najprostszą” 😉 rzecz. Przeczesać fora tematyczne od forum DA, poprzez forum Debiana i Apache’a a na php.net kończąc. Przeczesałem chyba wszystkie możliwe fora związane z tym tematem, niby cała masa ludzi ma podobny problem… no tylko, że rozwiązania jak nikt nie podał tak nie ma.  A nawet jeśli ktoś jakieś tam podał, to i tak nie działało i w niczym nie pomogło.

Serwer z DA i odpalenie Memcached

To sobie pomyślałem – ehee… to już chuj, po cache’owaniu. 🙂

Straciłem tylko ponad 4h na dupnych forach, które nic nie dały i w żaden sposób nie pomogły, a jedynie poziom mojego wkurwienia urósł do granic możliwości, bo co… mam jakiś serwer z edycji „chosen one”, że akurat na nim jednym to gówno nie chce działać?

Odpaliłem fajka i tak się gapiłem w konsolę przez jakiś czas aż w pewnym momencie pomyślałem sobie… no przecież teoretycznie działa, a ma wspomagać php’a więc może by tak zacząć po swojemu, czyli olać fora i doinstalować to, czego może brakować i walnąć jakąś banalną komendę dla sprawdzenia. Czyli standardowo, jak już się przeczyta wszystko co można, każdy pojedynczy manual, to nagle człowiek dochodzi do wniosku, że pewnie te najprostsze rozwiązania są najskuteczniejsze.

Zatem stwierdziłem, że nie dałem nic poza powyższymi komendami, no to wklepuję:

Oczywiście zapewne nie było to konieczne, ale doinstalowałem dla pewności, że w razie czego wszystko mam. Linię o rozszerzeniu w php.ini przecież dodałem już wcześniej, apache’a zrestartowałem więc co jest kurwa, że to dalej nie działa?

No i prosta rzecz… wklepuję:

A moim oczom ukazuje się jakiś gówniany komunikat, że nie może załadować modułu memcache.so 🙂

No to teraz mnie naszła myśl, co będę tracił kolejne 4h… skoro wszystko jest na serwie to wyedytuję po prostu php.ini po swojemu, bo szkoda czasu, a jak znam życie to i tak rozwiązania nie znajdę żadnego. W związku z tym, wszedłem sobie w katalog, w którym DA trzyma php.ini czyli:

po czym ponowna edycja zawartości i zmieniam linię: extension=memcache.so na:

Ponowny restart apache, restart memcached i… uff.

Dla pewności odpalam jeszcze:

Ok, tu działa i widać go na liście, demon też śmiga i nasłuchuje, to próbuję odpalić wcześniej utworzony plik w php’ie i… DZIAŁA! 🙂

Dostaję komunikat, który był zawarty w pliku a po refreshu strony drugi, że idzie z wersji „zmemcache’owanej”. 😉

EFEKTY

Efekt jest taki, że po włączeniu go do niektórych skryptów, średni load serwera co ciekawe spadł do wartości 0,02-0,5 przy wcześniejszych wartościach rzędu od 0,2-1,1 natomiast same strony mocno, ale to naprawdę mocno przyśpieszyły… na tym samym ruchu i obciążeniu na serwerze – czyli warto. 🙂

Zapomniałem jeszcze chyba wspomnieć o bibliotece libevent, no ale to już sobie możesz dopisać instalkę do tych początkowych i będzie fruwać aż miło.

Memcached – jak zainstalować i po co?
5 (100%) 4 głosów

2 KOMENTARZE

    • W zależności od ustawienia. Może wspomóc każdą ze stron, gdyż proces działa dla całego serwera… z tym, że to w której stronie/katalogu go będziesz wywoływać i wykorzystywać jego możliwości, to już zależy od Ciebie.

ZOSTAW ODPOWIEDŹ