キャッシュの内訳を調べる

memcachedでキャッシュの内訳を調べる時のメモ

どのくらいのメモリ容量が必要なのかを目安を調べる時に使っています。
方法はいたって簡単。
memdumpでキーの一覧が取れるので、それを順次ファイルを出力するだけです。
対象のサーバは環境変数MEMCACHED_SERVERSに設定されたものになります。

まず、下記のスクリプトを適当な名前で保存。

#!/bin/bash
if [ $# -ne 1 ]; then
    echo "$0 [output_path]"
    exit 0
fi
mkdir -p $1
rm -f $1/*
for KEY in `memdump`
do
    memcat --file=$1/$KEY $KEY
done

次にそのファイルを出力先のディレクトリを引数に実行。

$ bash memcat_all /tmp/dump

こんな感じでキャッシュされているデータがファイルへ出力されます。

[kury999@s0skadf2 /tmp]$ ll /tmp/dump/
合計 408
-rw-rw-r-- 1 kuri developer  165  615 19:28 notice_battle_15
-rw-rw-r-- 1 kuri developer  169  615 19:28 notice_battle_244
-rw-rw-r-- 1 kuri developer  169  615 19:28 notice_battle_289
-rw-rw-r-- 1 kuri developer  165  615 19:28 notice_battle_36
-rw-rw-r-- 1 kuri developer  169  615 19:28 notice_battle_6
-rw-rw-r-- 1 kuri developer  165  615 19:28 notice_battle_7
-rw-rw-r-- 1 kuri developer  142  615 19:28 post_6
-rw-rw-r-- 1 kuri developer 4138  615 19:28 session_19266
-rw-rw-r-- 1 kuri developer   61  615 19:28 text_19264_1800
-rw-rw-r-- 1 kuri developer   70  615 19:28 text_19264_1876
-rw-rw-r-- 1 kuri developer  162  615 19:28 text_19264_1877

キャッシュ容量が多いサーバでやると悲しい事になるので要注意
圧縮オプションを使っている場合は、データサイズが異なりますので気をつけて下さい。

ちなみにmemdumpで取得できるキー一覧には有効期限切れのキャッシュも含まれています。