与Drupal 7多站点有效地使用Memcache


12

我在我们的Memcache实例(v1.4.4)上将命中率设置为55%,并且想知道如何做才能提高命中率。我们处于多站点设置(超过30个站点)中,其中有两个负载平衡的Web服务器;每个Web服务器上都有一个memcached实例。

在中settings.php,我有:

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

我正在考虑使用垃圾箱来提高命中率,但是遇到了一些建议,即最新的内存缓存模块已经做到了这一点,但是我不确定,因为该模块的说明中包含设置垃圾箱的说明。

如果要走垃圾箱,您如何确定需要什么(表?)有自己的垃圾箱?这些是我站点中的缓存表:

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)

除垃圾桶外,我还能做什么来提高内存缓存的使用率?

非常感谢!


30多个网站?您能否分享环境细节,PHP mem和MySql max_allowed_pa​​cket,还计划启动许多子站点,已经有4个计划有10个,但是不确定drupal是否可以处理它。
GoodSp33d

@Kantu-我想与Drupal保持有关memcached的线程。如果您发布了一个新问题,我将很乐意权衡一下...或在此处或在drupal.org上查看类似的讨论。
KM。

我只想知道您的服务器配置,因为运行30个子站点非常罕见
GoodSp33d 2012年

Answers:


13

经过大量研究,以下是帮助我们提高命中率和内存缓存使用率的因素:

  • 将memcached升级到1.4.10(具有性能改进的最新版本)
  • 启用的二进制格式和压缩
  • 对箱使用默认值

我们在settings.php中的memcached conf现在看起来像这样:

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

最大收益

对我们来说最大的好处就是启用了压缩功能,即使文档指出它会增加CPU周期。我们有4个CPU分配给我们的VM,但没有发现差异。内存缓存调用的时间从〜1250ms到〜150ms(从NewRelic获取),用于创建内容(本例中为自定义文章)。

命中率

我们的命中率现在约为70%-远远高于之前的55%,但并没有使某些人报告的90%以上保持沉默...任务继续(-:

希望这可以帮助其他人。如果您遇到其他改进或有更正/建议,请发表评论或答案。

更新-memcahe模块的版本

我们从1.0-beta4版本升级到1.0,现在的命中率是87%。由于命中率没有超过70%,我不得不重新启动memcached。目前,我们已为memcached分配了64MB,因此这对我们来说不是什么大问题。


1
我会将键前缀设置为硬编码的内容,而不依赖于给定的服务器名称。例如,如果有人使用或不使用www访问您的网站。(您可能会重定向或仅作示例),最终将为缓存使用不同的键前缀。但是,您将必须更改每个站点的settings.php。
伯迪尔

1
此外,命中率在很大程度上取决于您的站点。.如果您有许多明确的缓存清除或内存缓存已满并且必须定期丢弃,则命中率显然会下降。
伯迪尔

感谢您在@Berdir中称重。我一直在检查平板,到目前为止,服务器名称作为键不是问题,但是我知道它可能在哪里。逐出率低至170左右,并且内存缓存中还剩下25%(〜17MB)的空间。有没有办法找出30%的高速缓存未命中的原因?缓存清除或其他...
KM。

不容易。到缓存失败时,您无法重现它发生的情况。您可以尝试的是日志缓存清除调用,包括回溯以查看它们来自何处,但不确定是否有很大帮助。
Berdir 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.