php实现监控varnish缓存服务器的状态
发布:smiling 来源: PHP粉丝网 添加日期:2021-05-05 13:17:49 浏览: 评论:0
这篇文章主要介绍了php实现监控varnish缓存服务器的状态,Varnish是一款高性能的开源HTTP加速器,可以替代Squid、Nginx等服务器,需要的朋友可以参考下
当varnish和网站部署在同一台服务器上的时候,我们不可能随时登录上服务器去查看varnish的命中率,没想到有大神早就写了出来,今天就分享给大家,使用网页查看varnish命中率。
系统:centos 5.x
软件:varnish-3.0.x
ps:3.0以下的版本可以通过Socket连接到Varnish管理端口,通过stat命令查看,3.0以上没有stat命令,只能通过下面的方法解决,代码如下:
- <?php
- $outfile=shell_exec("/usr/bin/varnishstat -x");
- $xml=simplexml_load_string($outfile);
- echo $xml->getName() . "<br />";
- 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"] . "<br />";
- echo "client_req: ".$arys["client_req"] . "<br />";
- echo "cache_hit: ".$arys["cache_hit"] . "<br />";
- echo "cache_miss: ".$arys["cache_miss"] . "<br />";
- echo "Cache hit rate: ".round(($arys["cache_hit"]/$arys["client_req"])*100)." % <br/>";
- echo "LRU nuked objects: ".$arys[n_lru_nuked]."<br/>";
- echo " ".byteReduce($arys["s_bodybytes"]+$arys["s_hdrbytes"])." Acc Content (".byteReduce($arys["s_hdrbytes"])." header ".byteReduce($arys["s_bodybytes"])." Body)";
- ?>
ps:为了查看实时情况,可以在这监控页加个html定时刷新.
Tags: php监控 varnish
- 上一篇:php在线解压ZIP文件的方法
- 下一篇:php+ajax实现文章自动保存的方法
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)