Optymalizacja wydajności Drupala - OVH

W jednym z pierwszych wpisów informowałem jak wpłynąć na wydajność Drupala w wypadku hostingu współdzielonego od OVH. Zawarte tam rady są dość skutecznie, ale nie jest to wszystko co można zrobić.

Poszukiwania innych rozwiązań wynikło z wiadomości o rozmiarze mojej bazy danych, która bardzo "spuchła" w przeciągu niespełna półtorej miesiąca. Winowajcą okazał się podstawowy mechanizm cacheowania stron, który jest oparty o bazę danych. Uściślając - problem dotyczył tabeli client_form, której rozmiar szybko rósł (w moim przypadku konieczne było ręczne wyczyszczenie zawartości tabeli poleceniem TRUNCATE TABLE).

Rozwiązań odpowiedzialnych za cechowanie stron, które można zintegrować z Drupalem jest całkiem sporo:

Wyżej wymienione rozwiązania to tylko te najbardziej powszechne. Tutaj znajdziecie listę dostępnych modułów wraz z porównaniem.

Osobiście skłaniałem się ku Memcache lub File Cache. Jako, że u OVH mam standardowo wbudowaną obsługę Memcache to zdecydowałem się na to rozwiązanie.

Jak wspomniałem wyżej w moim przypadku nie było konieczności instalacji memcached oraz jego konfiguracji (co zresztą polegałoby na kontakcie z pomocą techniczną). Instalację rozpoczynamy od pobrania paczki ze strony projektu i wrzuceniu plików do /sites/all/modules/. Następnie logujemy się do panelu administracyjnego i włączamy moduł. Teraz przyszła kolej na zmianę w pliku settings.php, w którym to musimy dodać następujące linie:

include_once('./includes/cache.inc');
include_once('./sites/all/modules/memcache/memcache.inc');
$conf['cache_default_class'] = 'MemCacheDrupal';

UWAGA! Plik ustawień, jak i katalog, w którym owy plik się znajduje powinny mieć niskie uprawnienia (bez prawa zapisu), więc w pierwszej kolejności należy zmienić uprawnienia na wyższe. Bez tego możemy szukać błędów godzinami, a jak później się okazuje plik ustawień nie został nadpisany.

UWAGA2! Powyższe ustawienia są tzw. minimum z minimum (zakładają, że wykorzystujemy tylko jedną instancję memcached). Jeżeli interesuje nas bardziej zaawansowana konfiguracja to zachęcam do zapoznania się ze stroną modułu i wpisami na forach Drupala.

Trzecim i zarazem ostatnim krokiem jest uruchomienie daemona memcached. Jako, że mój hosting nie posiada dostępu do shella to musiałem się posiłkować skryptem PHP o zawartości:

<?php
# Polecenia
$spr_czy_uruchom = 'ps -f -C memcached 2>&1';
$uruchom_memcached = 'memcached -m 64 -p 11211 -d 2>&1';
# Wlasciwy kod
echo "<pre>";
# Sprawdzenie czy usluga nie jest uruchomiona
system($spr_czy_uruchom, $wyjscie);
if (
$wyjscie == 0) {
    echo
"Usluga jest uruchomiona. Nie robie nic.\n";
}
# Jezeli nie - uruchom memcached
else {
    echo
"Uruchamiam usluge.\n";
   
system($uruchom_memcached, $wyjscie);
    if (
$wyjscie == 0) {
        echo
"Usluga zostala poprawnie uruchomiona.\n";
    }
    else {
        echo
"Usluga NIE zostala poprawnie uruchomiona!\n";
    }
}
echo
"</pre>";
?>

Skrypt można dopisać np. do settings php z użyciem funkcji require_once(), aby mieć pewność, że daemon memcached jest uruchomiony.

Po uruchomieniu memcached (i oczywiście wyłączeniu domyślnego cacheowania opartego o bazę danych) można odczuć wzrost responsywności strony. Jednak jak dla mnie było to wciąż za mało i dlatego zabrałem się za instalację modułu Boost. Pliki modułu umieszczamy na serwerze w odpowiednim katalogu i aktywujemy go z poziomu panelu. Następnie na serwerze tworzymy katalog cache i nadajemy mu uprawnienia 777. Po wykonaniu tych czynności generujemy dodatkowe linie dla pliku .htaccess w panelu administracyjnym w zakładce .htaccess Generation i wklejamy je do niego. Istotne jest również włączenie Crona, jeżeli uprzednio go wyłączyliśmy. Osobiście interwał ustawiłem na jeden dzień.

Po tych czynnościach strona zyskuje na szybkości - szczególnie dla anonimowych odwiedzających.

P.S. Jeżeli interesują was bardziej zaawansowane statystyki niż te udostępnione przez moduł memcache Drupala to zachęcam do przyjrzenia się narzędziu phpMemcachedAdmin.

Brak dostępnych komentarzy.

Dodaj komentarz

Filtered HTML

  • Adresy internetowe są automatycznie zamieniane w odnośniki, które można kliknąć.
  • To post pieces of code, surround them with <code>...</code> tags. For PHP code, you can use <?php ... ?>, which will also colour it based on syntax.
  • Dozwolone znaczniki HTML: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Znaki końca linii i akapitu dodawane są automatycznie.

Plain text

  • Znaczniki HTML niedozwolone.
  • Adresy internetowe są automatycznie zamieniane w odnośniki, które można kliknąć.
  • Znaki końca linii i akapitu dodawane są automatycznie.
CAPTCHA
Ten tekst ma na celu określenie czy jesteś człowiekiem. Ma to zapobiec mechanizmom rozpowszechniającym SPAM.
Image CAPTCHA
Enter the characters shown in the image.