Efektywne używanie Memcache z Drupal 7 Multisite

12

Ustawiam współczynnik trafień na poziomie 55% w naszym wystąpieniu memcache (wersja 1.4.4) i zastanawiam się, co można zrobić, aby poprawić wskaźnik trafień. Jesteśmy w konfiguracji wielostanowiskowej (ponad 30 witryn), z dwoma serwerami WWW z równoważeniem obciążenia; na każdym serwerze WWW jest instancja memcached

W settings.phpmam:

$conf['memcache_servers'] = array(
         '11.22.33.44:11211' => 'default',
         '11.22.33.45:11211' => 'default',
      );
$conf['memcache_bins'] = array('cache' => 'default');
$conf['memcache_key_prefix'] = $_SERVER['SERVER_NAME'];

Patrzę na używanie pojemników w celu poprawy współczynnika trafień, ale natknąłem się na sugestie, że najnowszy moduł memcache już to robi, ale nie jestem pewien, ponieważ instrukcje z modułem zawierają instrukcje dotyczące konfigurowania pojemników.

Jeśli pojemniki są już gotowe, jak określić, co (tabela?) Musi mieć swój własny pojemnik? Oto tabele pamięci podręcznej, które mam w swoich witrynach:

cache
cache_admin_menu (empty)
cache_block (empty)
cache_bootstrap
cache_field
cache_filter (empty)
cache_form (empty)
cache_image (empty)
cache_media_xml (empty)
cache_menu
cache_page (empty)
cache_path (empty)
cache_token (empty)
cache_update (empty)
cache_views
cache_views_data (empty)
ctools_css_cache (empty)
ctools_object_cache (empty)

Oprócz pojemników, co jeszcze mogę zrobić, aby poprawić wykorzystanie memcached?

Wielkie dzięki!

KM.
źródło
Ponad 30 witryn? Czy możesz podzielić się szczegółami środowiska, memem PHP i MySql max_allowed_packet, planuję również uruchomić wiele podstron, już mam 4 plany na 10, ale nie byłem pewien, czy Drupal sobie z tym poradzi.
GoodSp33d
@Kantu - Chcę zachować ten wątek dotyczący memcached z Drupal. Jeśli opublikujesz nowe pytanie, z przyjemnością wezmę udział ... lub sprawdź podobne dyskusje tutaj lub na drupal.org.
KM.
Chciałem tylko poznać konfiguracje twojego serwera, ponieważ uruchamianie 30 podstron jest bardzo rzadkie
GoodSp33d

Odpowiedzi:

13

Po wielu badaniach, oto, co pomogło naszemu współczynnikowi trafień i wykorzystaniu w pamięci:

  • Uaktualniono memcached do 1.4.10 (najnowsza wersja z ulepszeniami wydajności)
  • Włączono format binarny i kompresję
  • Użyj domyślnej dla pojemników

Nasze memcached conf w settings.php wygląda teraz mniej więcej tak:

$conf['memcache_bins'] = array('cache' => 'default');
$conf['memcache_options'] = array(
  Memcached::OPT_COMPRESSION => TRUE,
  Memcached::OPT_BINARY_PROTOCOL => TRUE,
  );
$conf['memcache_persistent'] = TRUE;
$conf['memcache_key_prefix'] = $_SERVER['SERVER_NAME'];

Największe zyski

Największym zyskiem dla nas było umożliwienie kompresji, mimo że w dokumentacji stwierdzono, że zwiększa ona cykle procesora. Mamy 4 procesory przydzielone do naszej maszyny wirtualnej i nie zauważyliśmy żadnej różnicy. Czas na wywołanie memcached zwiększył się z ~ 1250ms do ~ 150ms (uzyskanych z NewRelic) na utworzenie fragmentu treści (w naszym przypadku niestandardowy artykuł).

Współczynnik trafienia

Nasz współczynnik trafień wynosi teraz ~ 70% - znacznie lepiej niż 55% wcześniej, ale nie uspokaja 90% +, które niektórzy zgłosili ... poszukiwanie trwa

Mam nadzieję, że pomoże to komuś innemu. Jeśli natrafisz na inne ulepszenia lub masz poprawki / sugestie, zamieść komentarze lub odpowiedzi.

Aktualizacja - wersja modułu memcahe

Przeszliśmy z wersji 1.0-beta4 do 1.0, a nasz współczynnik trafień wynosi teraz 87%. Musiałem ponownie uruchomić memcached, ponieważ współczynnik trafień nie przekroczył 70%. W tej chwili przydzielono 64 MB pamięci memcached, więc nie było to dla nas wielkim problemem.

KM.
źródło
1
Ustawiłbym prefiks klucza na coś zakodowanego na stałe i nie zależy od podanej nazwy serwera. Na przykład, jeśli ktoś wchodzi na twoją stronę z www lub bez www. (który możesz przekierować lub coś, tylko przykład), skończysz z innym prefiksem klucza dla pamięci podręcznej. Będziesz jednak musiał zmienić settings.php dla każdej strony.
Berdir,
1
Również współczynnik trafień zależy w dużej mierze od twoich witryn. Jeśli masz wiele wyraźnych operacji czyszczenia pamięci podręcznej lub jeśli pamięć memcache jest pełna i musisz regularnie wyrzucać rzeczy, wskaźnik trafień oczywiście spadnie.
Berdir,
Dzięki za ważenie w @Berdir. Sprawdzałem płyty i do tej pory nazwa serwera jako klucza nie była problemem, ale widzę, gdzie może być. Eksmisje są niskie ~ 170 i mają 25% (~ 17 MB) wolnego miejsca w pamięci. Czy istnieje sposób na wyśledzenie przyczyny 30% braków w pamięci podręcznej? Pamięć podręczna została wyczyszczona czy coś jeszcze ...?
KM.
Nie łatwo. Do czasu awarii pamięci podręcznej nie można odtworzyć tego, co się z nią stało. To, co możesz spróbować, to wyczyścić pamięć podręczną, wyczyścić połączenia, w tym śledzić wstecz, aby zobaczyć, skąd pochodzą, ale nie jestem pewien, czy to bardzo by pomogło.
Berdir