Memcached の 設定、デバッグをしていて、nc
コマンドをインストールしました。
このnc
コマンドを使って、
Memcachedで特定キーのキャッシュ有効期限を取得する - Qiita
で、キャッシュの有効期限を取得をしていて、
この手順っぽいものをスクリプト化を作成してみました。
前提
スクリプトは以下の環境で実行しています。
-
OS
CentOS release 6.9 (Final) -
Memcached Memcached 1.4.4 1
また、nc
コマンドは、CentOS release 6.9 (Final)
には、インストールされていませんでした。
yum install nc nmap
でインストールする必要があります。
スクリプト
Memcached の 全データの、キー、キャッシュサイズ、有効期限を取得して、
TSV出力します。
-
convert_memcached_cachedump_to_tsv.sh
#!/bin/bash # HOST MEMCACHED_HOST="localhost" MEMCACHED_PORT="11211" # Header部の出力 echo -e "キー値\\tキャッシュサイズ(b)\\tキャッシュ有効期限" # stats items の 標準出力結果のnumberを含む行を抽出し、loop echo 'stats items' | nc $MEMCACHED_HOST $MEMCACHED_PORT | grep "number" | while read line; do # cut コマンドでslabid、item数を切り出し item=`echo $line | cut -d':' -f2` number=`echo $line | cut -d' ' -f3 | sed -e 's/[^0-9]//g'` # stats cachedump の標準出力結果のITEMを含む行を抽出し、loop echo "stats cachedump $item $number" | nc $MEMCACHED_HOST $MEMCACHED_PORT | grep ITEM | while read line_of_cachedump; do # cut コマンドでキー値、キャッシュサイズ、キャッシュ有効期限を切り出し key=`echo $line_of_cachedump | cut -d' ' -f2` value_size=`echo $line_of_cachedump | cut -d'[' -f2 | cut -d' ' -f1` expire_date=`echo $line_of_cachedump | cut -d';' -f2 | cut -d' ' -f2` # 切り出した文字列をtsv形式で出力 echo -e "$key\\t$value_size\\t`date -d @$expire_date`" done done
-
出力結果
以下の出力が得られます。
key value_size(b) expire_date :1:58a15f365158c9829c926435d1ac5e06 5845 2017年 4月 24日 月曜日 22:12:51 JST :1:76449fb3d8089f196eaab0f8658f3200 5845 2017年 4月 23日 日曜日 22:24:33 JST :1:1888d392a570a902cf087917060652b1 9992 2017年 4月 24日 月曜日 22:13:54 JST :1:3f3ecf6e38dd0d6cf18d74a267c6c125 10825 2017年 4月 24日 月曜日 22:13:49 JST :1:e3515fb72b62b5973f7d5ba728182ea1 10788 2017年 4月 23日 日曜日 22:25:30 JST :1:d0c49ca6b081d2eed892e440181bd34c 9804 2017年 4月 23日 日曜日 22:25:33 JST :1:7b15405602fc6d31c68e4e9b161f1363 10099 2017年 4月 24日 月曜日 22:13:53 JST :1:9d6550dd3b0d80cd75a21d51172eca22 9546 2017年 4月 23日 日曜日 22:25:37 JST :1:84a0d19b30b21babdca309df0809fb46 9804 2017年 4月 24日 月曜日 22:13:52 JST :1:6f87bb19e26cfc7f62893bbef67e0cf2 9835 2017年 4月 23日 日曜日 22:25:38 JST
データ件数が多かったりすると、まともなパフォーマンスがでるのかは、
ちょっとわかりません。。
以上です。
コメント