moodleのmemcached設定
前にWindows IIS+PHP環境でのmemcachedモジュール組み込みを書きましたが、今度はmoodleでの設定編です。
確認はWindows Server 2008R2 + IIS7.5 + mySQLの環境内にローカルでmemcachedを立ち上げるもっとも単純な構成です。
他の環境でもこのあたりは同じはずです。
Moodle側の設定
サイト管理-サーバ - パフォーマンス で設定します。
動作確認
memcachedに限らずキャッシュの仕組みはそれが無くとも動くようになっている事が多いので、設定をしてもちゃんと動作していないケースがあります。
今回の場合はmemcachedの状態を確認するのが一番です。
動作に使うアプリ
telnetでmemcachedのポート(11211)に接続して利用します。
Windows Server 2008の初期状態ではインストールされていないので、「機能の追加」でMS提供のtelnetをインストールしておきます。「Telnet クライアント」だけインストールします。
コマンド プロンプトで以下のコマンドでmemcachedに接続できます。
telnet localhost 11211
特にメッセージやプロンプトは出ません。
memcachedの動作確認
ここで状態を見るにはstatsコマンドを使います。
stats STAT pid 1376 STAT uptime 3054789333 STAT time 35116133 STAT version 1.4.4-14-g9c660c STAT pointer_size 64 STAT curr_connections 10 STAT total_connections 13 STAT connection_structures 12 STAT cmd_get 369 STAT cmd_set 64 STAT cmd_flush 1 STAT get_hits 150 STAT get_misses 219 STAT delete_misses 51 STAT delete_hits 28 STAT incr_misses 0 STAT incr_hits 0 STAT decr_misses 0 STAT decr_hits 0 STAT cas_misses 0 STAT cas_hits 0 STAT cas_badval 0 STAT auth_cmds 0 STAT auth_errors 0 STAT bytes_read 34391 STAT bytes_written 87341 STAT limit_maxbytes 67108864 STAT accepting_conns 1 STAT listen_disabled_num 0 STAT threads 4 STAT conn_yields 0 STAT bytes 7369 STAT curr_items 15 STAT total_items 64 STAT evictions 0 END
キャッシュの中身を確認
実際にmoodleのキャッシュがされるか確認するには少しmoodleを動作させてから行います。
まずstats slabsコマンドを実行します。
stats slabs STAT 1:chunk_size 96 STAT 1:chunks_per_page 10922 STAT 1:total_pages 1 STAT 1:total_chunks 10922 STAT 1:used_chunks 1 STAT 1:free_chunks 1 STAT 1:free_chunks_end 10920 STAT 1:mem_requested 87 STAT 1:get_hits 0 STAT 1:cmd_set 18 STAT 1:delete_hits 0 STAT 1:incr_hits 0 STAT 1:decr_hits 0 STAT 1:cas_hits 0 STAT 1:cas_badval 0 STAT 2:chunk_size 120 STAT 2:chunks_per_page 8738 STAT 2:total_pages 1 STAT 2:total_chunks 8738 STAT 2:used_chunks 0 STAT 2:free_chunks 1 STAT 2:free_chunks_end 8737 STAT 2:mem_requested 0 STAT 2:get_hits 0 STAT 2:cmd_set 23 STAT 2:delete_hits 23 STAT 2:incr_hits 0 STAT 2:decr_hits 0 STAT 2:cas_hits 0 STAT 2:cas_badval 0 ・ 略 ・ STAT 14:chunk_size 1856 STAT 14:chunks_per_page 564 STAT 14:total_pages 1 STAT 14:total_chunks 564 STAT 14:used_chunks 2 STAT 14:free_chunks 0 STAT 14:free_chunks_end 562 STAT 14:mem_requested 3250 STAT 14:get_hits 19 STAT 14:cmd_set 4 STAT 14:delete_hits 0 STAT 14:incr_hits 0 STAT 14:decr_hits 0 STAT 14:cas_hits 0 STAT 14:cas_badval 0 STAT active_slabs 8 STAT total_malloced 8385360 END
次にスラブの番号を指定してキャッシュの中身を確認します。ここでは14を指定しています。
stats cachedump 14 100
stats cachedump 14 100 ITEM moodleorg|mdl_|course|2 [1555 b; 1275294096 s] ITEM moodleorg|mdl_|course|1 [1513 b; 1275294096 s] END
他のシステムでmemcachedを使っている場合は当然他のシステムのキャッシュである可能性も高いのでいくつかスラブの番号を変えてみるか、一覧を表示するスクリプトを利用するなどしてみてください。
キーとして「moodleorg|mdl_|course|2」とあるのでmoodleのデータがキャッシュされているのが分かります。moodle DB名およびテーブルのサフィックスがキーに含まれているので、複数のmoodleを1つのサーバに建てた時にmemcachedを1つだけにしてもキャッシュの混線は起きないようです。
もし一つも上記の様なデータがない場合はうまく動作していないので設定を再度チェックしてみてください。