キャッシュの内訳を調べる
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 6月 15 19:28 notice_battle_15 -rw-rw-r-- 1 kuri developer 169 6月 15 19:28 notice_battle_244 -rw-rw-r-- 1 kuri developer 169 6月 15 19:28 notice_battle_289 -rw-rw-r-- 1 kuri developer 165 6月 15 19:28 notice_battle_36 -rw-rw-r-- 1 kuri developer 169 6月 15 19:28 notice_battle_6 -rw-rw-r-- 1 kuri developer 165 6月 15 19:28 notice_battle_7 -rw-rw-r-- 1 kuri developer 142 6月 15 19:28 post_6 -rw-rw-r-- 1 kuri developer 4138 6月 15 19:28 session_19266 -rw-rw-r-- 1 kuri developer 61 6月 15 19:28 text_19264_1800 -rw-rw-r-- 1 kuri developer 70 6月 15 19:28 text_19264_1876 -rw-rw-r-- 1 kuri developer 162 6月 15 19:28 text_19264_1877
キャッシュ容量が多いサーバでやると悲しい事になるので要注意
圧縮オプションを使っている場合は、データサイズが異なりますので気をつけて下さい。
ちなみにmemdumpで取得できるキー一覧には有効期限切れのキャッシュも含まれています。