当varnish和网站部署在同一台服务器上的时候,我们不可能随时登录上服务器去查看varnish的命中率,没想到有大神早就写了出来,今天就分享给大家,使用网页查看varnish命中率。
系统:centos 5.x
软件:varnish-3.0.x
ps:3.0以下的版本可以通过Socket连接到Varnish管理端口,通过stat命令查看,3.0以上没有stat命令,只能通过下面的方法解决。
$outfile=shell_exec("/usr/bin/varnishstat -x");
$xml=simplexml_load_string($outfile);
echo $xml->getName() . "
";
foreach($xml->children() as $child)
{
//$tmpName="";
foreach($child->children() as $subChild)
{
if ($subChild->getName() =="name" )
{
$tmpName=$subChild;
}
else if ($subChild->getName() =="value" )
{
if ($tmpName!="")
{
$arys["$tmpName"]=$subChild;
$tmpName="";
}
}
else
{
continue;
}
}
}
function byteReduce($bytes)
{
if ($bytes>1099511627776)
{
return round($bytes/1099511627776)."TB";
}
else if ($bytes > 1073741824)
{
return round($bytes/1073741824)."GB";
}
else if ($bytes>1048576)
{
return round($bytes/1048576)."MB";
}
else if ($bytes>1024)
{
return round($bytes/1024)."KB";
}
else
{
return $bytes."B";
}
}
echo "client_conn: ".$arys["client_conn"] . "
";
echo "client_req: ".$arys["client_req"] . "
";
echo "cache_hit: ".$arys["cache_hit"] . "
";
echo "cache_miss: ".$arys["cache_miss"] . "
";
echo "Cache hit rate: ".round(($arys["cache_hit"]/$arys["client_req"])*100)." %
";
echo "LRU nuked objects: ".$arys[n_lru_nuked]."
";
echo " ".byteReduce($arys["s_bodybytes"]+$arys["s_hdrbytes"])." Acc Content (".byteReduce($arys["s_hdrbytes"])." header ".byteReduce($arys["s_bodybytes"])." Body)";
?>
效果如下:
ps:为了查看实时情况,可以在这监控页加个html定时刷新.
好了,这样就方便我们随时查看varnish的状态了.
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn