Utiliser Memcache efficacement avec Drupal 7 Multisite

12

Je fixe un taux de réussite de 55% sur notre instance memcache (v1.4.4) et je me demande ce qui peut être fait pour améliorer le taux de réussite. Nous sommes dans une configuration multisite (plus de 30 sites), avec deux serveurs Web à charge équilibrée; il existe une instance de memcached sur chaque serveur Web.

Dans le settings.php, j'ai:

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

J'envisage d'utiliser des bacs pour améliorer le taux de réussite, mais j'ai rencontré des suggestions selon lesquelles le dernier module memcache le fait déjà, mais je ne suis pas sûr car les instructions avec le module contiennent des instructions sur la configuration des bacs.

Si les bacs sont en route, comment déterminez-vous ce que (table?) A besoin d'avoir son propre bac? Ce sont les tables de cache que j'ai dans mes sites:

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)

En plus des bacs, que puis-je faire d'autre pour améliorer l'utilisation des memcaches?

Merci beaucoup!

KM.
la source
30 + sites? Pourriez-vous s'il vous plaît partager les détails de l'environnement, PHP mem et MySql max_allowed_packet, je prévois également de lancer de nombreux sous-sites, nous avons déjà 4 plans pour en avoir 10, mais je ne savais pas si Drupal pouvait le gérer.
GoodSp33d
@Kantu - Je veux garder ce fil sur memcached avec Drupal. Si vous postez une nouvelle question, je serai heureux de peser ... ou consultez des discussions similaires ici ou sur drupal.org.
KM.
Je voulais juste connaître vos configurations de serveur, car exécuter 30 sous-sites est très rare
GoodSp33d

Réponses:

13

Après de nombreuses recherches, voici ce qui a contribué à notre taux de réussite et à l'utilisation de Memcached:

  • Memcached mis à niveau vers 1.4.10 (la dernière version avec des améliorations de performances)
  • Format binaire et compression activés
  • Utiliser la valeur par défaut pour les bacs

Notre conf memcached dans settings.php ressemble maintenant à ceci:

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

Plus gros gains

Le gain le plus important pour nous a été d'activer la compression, même si les documentations indiquent qu'elle augmente les cycles du processeur. Nous avons 4 CPU alloués à notre VM, et nous n'avons pas remarqué de différence. Le temps pour les appels memcached est passé de ~ 1250 ms à ~ 150 ms (obtenu auprès de NewRelic) pour créer un élément de contenu (article personnalisé dans notre cas).

Taux de réussite

Notre taux de réussite est maintenant de ~ 70% - bien mieux que 55% plus tôt, mais pas calme les 90% + que certains ont rapportés ... la quête continue (-:

J'espère que cela aide quelqu'un d'autre. Si vous rencontrez d'autres améliorations ou avez des corrections / suggestions, veuillez poster des commentaires ou des réponses.

Mise à jour - Version du module memcahe

Nous sommes passés de la version 1.0-beta4 à 1.0 et notre taux de réussite est désormais de 87%. J'ai dû redémarrer memcached car le taux de réussite n'allait pas au-delà de 70%. Nous avons 64 Mo alloués à memcached pour le moment, donc ce n'était pas un gros problème pour nous.

KM.
la source
1
Je définirais le préfixe de clé sur quelque chose de codé en dur et ne dépendrait pas du nom de serveur donné. Par exemple, si quelqu'un accède à votre site avec ou sans www. (que vous pourriez rediriger ou quelque chose, juste un exemple), vous vous retrouverez avec un préfixe de clé différent pour le cache. Vous devrez cependant modifier le fichier settings.php pour chaque site.
Berdir
1
De plus, le taux de succès dépend fortement de vos sites .. si vous avez de nombreux vides de cache explicites ou si memcache est plein et doit jeter des trucs régulièrement, votre taux de succès baissera évidemment.
Berdir
Merci d'avoir pesé dans @Berdir. J'ai vérifié les dalles et jusqu'à présent, le nom du serveur en tant que clé n'a pas été un problème, mais je peux voir où cela pourrait être. Les expulsions sont faibles ~ 170 et il reste 25% (~ 17 Mo) de place dans le memcached. Existe-t-il un moyen de rechercher la cause des 30% des échecs de cache? Le cache s'efface ou autre chose ...?
KM.
Pas facilement. Au moment où le cache échoue, vous ne pouvez pas reproduire ce qui s'est passé avec. Ce que vous pourriez essayer, c'est de supprimer les appels du cache du journal, y compris une trace pour voir d'où ils viennent, mais vous ne savez pas si cela vous aiderait beaucoup.
Berdir