Effizientes Verwenden von Memcache mit Drupal 7 Multisite

12

Ich stelle für unsere memcache-Instanz (v1.4.4) eine Trefferquote von 55% ein und frage mich, was getan werden kann, um die Trefferquote zu verbessern. Wir sind in einem Multisite-Setup (über 30 Sites) mit zwei Webservern mit Lastenausgleich. Auf jedem Webserver befindet sich eine Instanz von memcached.

In der habe settings.phpich:

$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'];

Ich versuche, die Trefferquote mithilfe von Bins zu verbessern, habe jedoch einige Vorschläge gefunden, dass das neueste memcache-Modul dies bereits tut, bin mir jedoch nicht sicher, da die Anweisungen mit dem Modul Anweisungen zum Einrichten von Bins enthalten.

Wie bestimmen Sie, welche (Tabellen-) Objekte benötigt werden, um einen eigenen Behälter zu haben? Dies sind die Cache-Tabellen, die ich auf meinen Sites habe:

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)

Was kann ich neben den Behältern noch tun, um die Verwendung von Memcaches zu verbessern?

Danke vielmals!

KM.
quelle
30 + Websites? Könnten Sie bitte die Umgebungsdetails, PHP mem und MySql max_allowed_packet mitteilen, planen Sie auch, viele Unterseiten zu starten, haben bereits 4 Pläne, um 10 zu haben, waren sich aber nicht sicher, ob Drupal damit umgehen könnte.
GoodSp33d
@Kantu - Ich möchte diesen Thread über Memcached mit Drupal behalten. Wenn Sie eine neue Frage stellen, würde ich mich freuen ... oder ähnliche Diskussionen hier oder auf drupal.org anzuschauen.
KM.
Ich wollte nur Ihre Serverkonfigurationen kennenlernen, da es sehr selten ist, 30 Unter-Sites zu
betreiben

Antworten:

13

Nach langem Nachforschen haben sich folgende Faktoren auf unsere Trefferquote und die Verwendung im Speicher ausgewirkt:

  • Upgrade von Memcached auf 1.4.10 (die neueste Version mit Leistungsverbesserungen)
  • Binärformat und Komprimierung aktiviert
  • Verwenden Sie die Standardeinstellung für Behälter

Unser memcached conf in settings.php sieht jetzt ungefähr so ​​aus:

$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'];

Größte Gewinne

Der größte Vorteil für uns war die Aktivierung der Komprimierung, obwohl in der Dokumentation angegeben ist, dass dadurch die CPU-Zyklen erhöht werden. Wir haben unserer VM 4 CPUs zugewiesen und haben keinen Unterschied bemerkt. Die Zeit für zwischengespeicherte Anrufe ging von ~ 1250 ms auf ~ 150 ms (bezogen von NewRelic), um einen Inhalt zu erstellen (in unserem Fall ein benutzerdefinierter Artikel).

Trefferquote

Unsere Trefferquote beträgt jetzt ~ 70% - viel besser als 55% zuvor, aber die 90% +, von denen einige berichtet haben, sind nicht zu bremsen ... die Quest geht weiter (-:

Hoffentlich hilft das jemand anderem. Wenn Sie auf andere Verbesserungen stoßen oder Korrekturen / Vorschläge haben, posten Sie bitte Kommentare oder Antworten.

Update - Version des memcahe Moduls

Wir sind von Version 1.0-Beta4 auf 1.0 übergegangen und haben jetzt eine Trefferquote von 87%. Ich musste memcached neu starten, da die Trefferquote nicht über 70% lag. Wir haben momentan 64MB für memcached reserviert, daher war dies keine große Sache für uns.

KM.
quelle
1
Ich würde das Schlüsselpräfix auf etwas Hardcodiertes setzen und nicht vom angegebenen Servernamen abhängen. Zum Beispiel, wenn jemand mit oder ohne www auf Ihre Website zugreift. (was Sie möglicherweise umleiten oder so, nur ein Beispiel), erhalten Sie ein anderes Schlüsselpräfix für den Cache. Sie müssen jedoch die settings.php für jede Site ändern.
Berdir
1
Außerdem hängt die Trefferquote stark von Ihren Websites ab. Wenn Sie viele explizite Cache-Löschvorgänge durchführen oder wenn der Memcache voll ist und regelmäßig etwas wegwerfen muss, sinkt die Trefferquote offensichtlich.
Berdir
Danke, dass du @Berdir eingewogen hast. Ich habe die Platten überprüft und bis jetzt war der Servername als Schlüssel kein Problem, aber ich kann sehen, wo er sein könnte. Zwangsräumungen sind nur noch ~ 170 und 25% (~ 17 MB) im Speicher. Gibt es eine Möglichkeit, die Ursache für die 30% igen Cache-Fehler zu ermitteln? Cache löschen oder was anderes ...?
KM.
Nicht einfach. Wenn der Cache ausfällt, können Sie nicht reproduzieren, was damit passiert ist. Sie könnten versuchen, Aufrufe zum Löschen des Protokollcaches einschließlich einer Rückverfolgung, um zu sehen, woher sie kommen, zu protokollieren, sind sich jedoch nicht sicher, ob dies viel helfen würde.
Berdir