MUCFAQ
Moodle Unified Cache(MUC)は、一見すると複雑でとっつきにくい代物に見えることがあります。そのため、無視されたり、よくあるように、不適切に設定されたりすることがあります。
ここでは、知っておくべきことを説明します(これを読めばそれ以外は読まなくて構いません)。
MUCとは何ですか?
MUCはキャッシュです。キャッシュとは、データを元のソースから取得するよりも簡単かつ高速に取得できるデータの保存場所です。(計算の)手間を省き、Moodleを高速化します。
MUCを使用すべきですか?
はい。また、Moodle 2.4以降を実行しているサイトでは、すでにMUCを使用しています。
サイトがすでに問題なく動作している場合は、「早すぎる最適化は諸悪の根源である」ので、何も変更しないことを検討してください。
デフォルトでは、MUCはキャッシュしたオブジェクトの保存にファイルシステムを使用します。これだけでも、MUCをまったく使用しない場合と比べて大幅に高速になります。MUCをさらに設定するのは、それをもっと高速にしようとしているにすぎません。
デフォルトのファイルシステムMUCの何が問題なのですか?
ほとんど問題はありません。ただし、MUCのパフォーマンスは、そのストレージメディアの読み書き速度に左右されます。
一般に、ディスクは低速ですが安全な(永続的な)ストレージです。MUCのデータはいつでも再生成できるため、安全に保持する必要はありません。そのため、RAMのように高速ですが揮発性のある場所に保持しても構いません。
MUCを高速化するにはどうすればよいですか?
RAMベースのキャッシュを使用することが、MUCを高速化する最善の方法です。これには、tmpfs、Memcached、APC、Redisなど、いくつかのツールを使用でき、今後もおそらく増えていくでしょう……。特定の要件がよくわからない場合は、Memcachedから始めるとよいでしょう。Memcachedは一般的で、十分にテストされており、高速で、デプロイも簡単です。
Memcachedをデプロイするにはどうすればよいですか?
これは決して網羅的なものではなく、OSなどによって異なります。しかし、簡単にするために……
- オペレーティングシステムに適した方法で、MemcachedとそのPHPサポートをインストールします。例えば、Debian/Ubuntuでは次のようにします。
apt-get install memcached php5-memcached
- Memcachedを設定するか、少なくともそのデフォルト設定を把握しておきます。例:
- 64MBのRAM割り当て
- ポート11211で実行
- Moodleで次の操作を行います。
- 「サイト管理 > プラグイン > キャッシング > 設定」に移動します。
- 「インストール済みキャッシュストア」でMemcachedを探し、「インスタンスを追加する」アクションをクリックします。
- ストアに「Memcached_MUC」などの名前を付けます。
- 上記の基本設定を前提として、サーバに「localhost」と入力します。「変更を保存する」をクリックします。
- 「キャッシュ管理」ページの一番下までスクロールします。
- 「マッピングが存在しない場合に使用されるストア」で「マッピングを編集する」をクリックします。
- 「アプリケーション」ドロップダウンでキャッシュの名前を選択します。「変更を保存する」をクリックします。
- 恩恵を受けます
詳しくは、キャッシングをご覧ください。
MUCにはどのくらいのメモリを割り当てるべきですか?
ほとんどのMemcachedのデプロイではデフォルトが64MBで、標準的なMoodleインストールにはおそらくこれで十分以上です。実際の例として、過去24時間に約6000人の個別ユーザがログインしたライブサイトを確認したところ、MemcachedのMUC使用量は約11MBでした(Moodle 2.8、追加プラグイン26個)。
Memcachedのようなインメモリキャッシュを導入する際に最も重要なのは、自分自身のデプロイでの使用状況を監視して把握することです。要件は大きく異なる場合があるためです。
セッションにすでにMemcachedを使用していますが、それを再利用できますか?
いいえ、残念ながらできません。MUCがパージされるとセッションもパージされ、すべてのユーザがログアウトされます。この場合、セッション用とMUC用の2つのMemcachedインスタンスが必要です。その方法の例はこちらにあります。
実際に使用しているキャッシュストアを確認するにはどうすればよいですか?

次の場所で、一時的にパフォーマンスデバッグを有効にします。
サイト管理 開発 > デバッグ > パフォーマンス情報
これにより、すべてのページのフッタに役立つ情報が追加されます(テーマが対応している場合)。この情報には、MUCオブジェクトと、それらの取得元のキャッシュストアが含まれます。
サーバのクラスタがあるのですが、<ここにさらなる質問>?
システム管理の腕前という点では、おそらくこのFAQの対象読者のレベルを超えています。
あの小さな灰色の三角形は何ですか?

これは、デフォルトのアプリケーションキャッシュストアのマッピングが、1つ以上のキャッシュ定義の要件をサポートしていない場合に、「マッピングが存在しない場合に使用されるストア」の下に表示されます。
例えば、デフォルトのアプリケーションキャッシュのうち、イベント無効化はMemcachedではサポートされていません。これは、イベント無効化にはデータ保証が必要なためです。データ保証とは、キャッシュにデータを入れたら、そのデータがキャッシュ内に存在し続けることを保証するものです。データは、空き容量を確保するためや、最近使用されていないという理由でクリーンアップされることはありません。Memcachedはキャッシュからオブジェクトを追い出すため、イベント無効化には使用できません。
イベント無効化は単にファイルシステムキャッシュを使用するか、指定されていれば互換性のある二次アプリケーションキャッシュ、またはイベント無効化の定義に直接割り当てられたキャッシュを使用するため、これは問題ではありません。
MUCの設定に関するその他のドキュメントはどこにありますか?
キャッシングをご覧ください。
キャッシュシステムの詳細な仕組み、例えばキャッシュの機能(ttl、データ保証など)にさらに興味がある場合は、開発者向けAPIを参照するとよいでしょう。
関連項目
- MUCとlocalcacheのフォーラムディスカッション