Drupal 7マルチサイトでのMemcacheの効果的な使用


12

memcacheインスタンス(v1.4.4)でヒット率を55%に設定し、ヒット率を改善するために何ができるのか疑問に思っています。負荷分散された2つのWebサーバーを備えたマルチサイトセットアップ(30以上のサイト)にいます。各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'];

ビンを使用してヒット率を改善することを検討していますが、最新のmemcacheモジュールがこれを既に行うという提案に出くわしましたが、モジュールの指示にビンの設定に関する指示が含まれているので、確信がありません。

ビンが移動する方法である場合、どの(テーブル?)に独自のビンが必要かをどのように決定しますか?これらは私のサイトにあるキャッシュテーブルです。

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)

ビンに加えて、memcachedの使用を改善するために他に何ができますか?

どうもありがとう!


30以上のサイト?環境の詳細、PHP mem、およびMySql max_allowed_pa​​cketを共有してください
GoodSp33d

@Kantu-memcachedに関するこのスレッドをDrupalで保持したい。新しい質問を投稿する場合は、お気軽にお問い合わせください。または、こちらまたはdrupal.orgで同様の議論をチェックしてください。
KM。

私はちょうど30件のサブサイトを実行していることは非常にまれであるとして、あなたのサーバー構成を知りたいと思った
GoodSp33d

回答:


13

多くの調査の結果、ヒット率とmemcachedの使用に役立ったのは次のとおりです。

  • 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サイクルが増加すると記載されているにもかかわらず、私たちにとって最大の利点は圧縮を有効にすることでした。VMに4つのCPUが割り当てられており、違いに気付いていません。memcached呼び出しの時間は、コンテンツ(この例ではカスタム記事)を作成するために〜1250msから〜150ms(NewRelicから取得)になりました。

ヒット率

ヒット率は現在〜70%で、55%以前よりもはるかに優れていますが、一部の人が報告している90%+を静かにしません...クエストは続きます(-:

うまくいけば、これは他の人の助けになるでしょう。他の改善に出くわしたり、修正/提案がある場合は、コメントまたは回答を投稿してください。

更新-memcaheモジュールのバージョン

バージョン1.0-beta4から1.0に移行し、ヒット率は87%になりました。ヒット率が70%を超えていないため、memcachedを再起動する必要がありました。現時点ではmemcachedに64MBが割り当てられているため、これは大したことではありませんでした。


1
キープレフィックスをハードコードされたものに設定し、指定されたサーバー名に依存しません。たとえば、誰かがwwwの有無にかかわらずあなたのサイトにアクセスした場合。(これはリダイレクトまたは何か、ほんの一例です)、キャッシュの別のキープレフィックスになります。ただし、各サイトのsettings.phpを変更する必要があります。
ベルディール

1
また、ヒット率はサイトに大きく依存します。明示的なキャッシュクリアが多数ある場合、またはmemcacheがいっぱいになって定期的にデータを破棄する必要がある場合、ヒット率は明らかに低下します。
ベルディール

@Berdirで計量していただきありがとうございます。私はスラブをチェックしてきましたが、これまではキーとしてのサーバー名は問題ではありませんでしたが、どこにあるかはわかります。エビクションは170未満で、memcachedに25%(〜17MB)の空きが残っています。30%のキャッシュミスの原因を追跡する方法はありますか?キャッシュがクリアされるか、他の何かが...?
KM。

簡単ではありません。キャッシュが失敗するまでには、キャッシュで何が起こったのか再現できません。あなたが試すことができるのは、どこから来ているのかを見るためのバックトレースを含むログキャッシュクリアコールです。
ベルディール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.