kotaoueはそんなかんじ

kotaoueの最新情報。

memcachedのキャッシュのヒット率とかをPHPでモニタリングする。

memcachedに初めて触れたので、バッドノウハウかもしんないけども…
memcache.php見ながら、
すげーキャッシュがもりもり増える、楽しい楽しい!!
と盛り上がっていたものの、
とりあえず、キャッシュのヒット率がどれくらいなのかを
ログとしてとっておきたいなぁと思ったときの作業メモ。
PHP側で、どうやってmemcachedの状況みるべって思ったものの、
memcached-toolって便利なコマンドがあったので、それを使う。
memcached の中身を確認するなら memcached-tool コマンド | バシャログ。
さらに、memcached-tool stats の中にはhit_rateみたいな項目がなかったので、調べたところ、

上記の結果による get_hits の値を cmd_gets の値で割ってください。
memcached と Grails: 第 1 回 memcached をインストールして使用する

だそうだ。

なので、↓のようなの書いて、cronに突っ込んだ。

#!/usr/local/bin/php
<?php
$fileName = date("Ymd");

$command = "/usr/local/bin/memcached-tool localhost stats";
$commandResult = Array();

#ログ用に日時を抽出
$writeString = date("Y/m/d").",";
$writeString.= date("H:i").",";

#コマンドを実行
exec($command,$commandResult);
$tmp = Array();
$statsResult = Array();
foreach($commandResult as $value) {
	#結果を配列に入れなおす
	$tmp = explode(" ", trim($value));
	$tmp = array_filter($tmp, 'strlen');
	$tmp = array_values($tmp);
	
	$statsResult[$tmp[0]] = $tmp[1];
}

$writeString.= ($statsResult["get_hits"] / $statsResult["cmd_get"]).","."\r\n";

#ファイル保存
$filedir = "/usr/memcached_log/";
$fp = FOpen("$filedir/".$fileName.".csv","a");
FWrite($fp,$writeString);
FClose($fp);
?>

コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>