바니쉬와 웹사이트가 동일한 서버에 배포되면, 바니쉬의 적중률을 확인하기 위해 언제든지 서버에 로그인하는 것이 불가능합니다. 의외로 오래 전에 마스터가 작성해 놓았습니다. 공유하시고, 웹페이지를 이용하여 바니쉬 적중률을 확인해보세요.
시스템: centos 5.x
소프트웨어: varnish-3.0.x
ps: 3.0 이하 버전은 소켓을 통해 Varnish 관리 포트에 연결하여 stat 명령을 통해 볼 수 있으며 3.0 이상 버전에서는 stat 명령이 없으며 다음 방법으로만 해결할 수 있습니다.
$outfile=shell_exec("/usr/bin/varnishstat -x");
$xml=simplexml_load_string($outfile);
echo $xml->getName() "
";
foreach($xml->children()을 $child로)
{
//$tmpName="";
foreach($child->children() as $subChild)
{
if ($subChild->getName() == "name" )
{
$tmpName=$subChild;
}
else if ($subChild->getName() == "value" )
{
if ($tmpName!="")
{
$arys["$tmpName"]=$subChild;
$tmpName="";
}
}
그 외
{
계속;
}
}
}
함수 byteReduce($bytes)
{
만약 ($바이트>1099511627776)
{
반환 라운드($bytes/1099511627776)."TB";
}
else if ($bytes > 1073741824)
{
반환 라운드($bytes/1073741824)."GB";
}
else if ($bytes>1048576)
{
반환 라운드($bytes/1048576)."MB";
}
else if ($bytes>1024)
{
반환 라운드($bytes/1024)."KB";
}
그 외
{
$바이트를 반환합니다."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 "캐시 적중률: ".round(($arys["cache_hit"]/$arys["client_req"])*100)." %
";
echo "LRU 핵이 있는 개체: ".$arys[n_lru_nuked]."
";
echo " ".byteReduce($arys["s_bodybytes"] $arys["s_hdrbytes"])." Acc 콘텐츠(".byteReduce($arys["s_hdrbytes"])." 헤더 ".byteReduce($arys["s_bodybytes) "])." 본문)";
?>
효과는 다음과 같습니다.
ps: 실시간 상황을 확인하시려면 본 모니터링 페이지에 html을 추가하여 주기적으로 새로고침하시면 됩니다.
좋아요, 이렇게 하면 언제든지 바니시 상태를 더 쉽게 확인할 수 있습니다.