监控varnish的缓存命中率

缓存命中率计算公式:

MAIN.cache_hit / (MAIN.cache_hit + MAIN.cache_miss)

以下为监控varnish缓存命中率的脚本,一共有两个功能:

  1. 监控varnish总命中率,使用以上公式进行计算
  2. 监控最近一段时间内的命中率,方法是把当前获得的hit数和总数以变量形式输出到文件中,下一次执行该脚本时从文件中获取旧数据,使用当前数据与旧数据的差值进行计算命中率

使用方法:

传入totalHitRate 或 recentHitRate 以获取对应的值,可结合zabbix做监控

#!/bin/bash

totalHit=`varnishstat -1 | awk ‘/MAIN.cache_hit\>/{print $2}‘`
totalMiss=`varnishstat -1 | awk ‘/MAIN.cache_miss\>/{print $2}‘`
total=$[${totalHit}+${totalMiss}]

echoTotalHitRate()
{
    totalHitRate=$(awk ‘BEGIN{print "‘"$totalHit"‘"/"‘"$total"‘"}‘)
    
    echo ${totalHitRate}
}

echoRecentHitRate()
{
    [ -f lastData ] && source `pwd`/lastData
    recentHit=$[$totalHit-${lastHit:-0}]
    recentTotal=$[$total-${lastTotal:-0}]
    echo "lastHit=$totalHit" > lastData
    echo "lastTotal=$total" >> lastData
    [ $recentTotal != "0" ] && recentHitRate=$(awk ‘BEGIN{print "‘"$recentHit"‘"/"‘"$recentTotal"‘"}‘)     || recentHitRate=`echoTotalHitRate`
    
    echo ${recentHitRate}
}

case $1 in
totalHitRate)
    echoTotalHitRate
    ;;
recentHitRate)
    echoRecentHitRate
    ;;
esac
时间: 2024-11-08 19:05:08

监控varnish的缓存命中率的相关文章

如何提升缓存命中率

缓存命中率的介绍 命中:可以直接通过缓存获取到需要的数据. 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作.原因可能是由于缓存中根本不存在,或者缓存已经过期. 通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短.吞吐量越高),抗并发的能力越强. 由此可见,在高并发的互联网系统中,缓存的命中率是至关重要的指标. 如何监控缓存的命中率 在memcached中,运行state命令可以查看memcached服务的状态信息,其中cmd_get表

如何提高缓存命中率

缓存命中率的介绍 命中:可以直接通过缓存获取到需要的数据. 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作.原因可能是由于缓存中根本不存在,或者缓存已经过期. 通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短.吞吐量越高),抗并发的能力越强. 由此可见,在高并发的互联网系统中,缓存的命中率是至关重要的指标. 如何监控缓存的命中率 redis提供了INFO这个命令,能够随时监控服务器的状态,只用telnet到对应服务器的端口,执行命令

Mysql查询缓存碎片、缓存命中率及Nagios监控

Mysql 的优化方案,在互联网上可以查找到非常多资料,今天对Mysql缓存碎片和命中率作了详细了解,个人作了简单整理. 一.Mysql查询缓存碎片和缓存命中率. mysql> SHOW STATUS LIKE 'qcache%'; +-------------------------+-----------+ | Variable_name | Value | +-------------------------+-----------+ | Qcache_free_blocks | 5 |

varnish的缓存加速,以及动静分离,负载均衡

一个简单的拓扑如上,varnish1 上还同时开了nginx,用来做静态的http,app1和app2 是nginx+fastcgi,这个拓扑主要做的是Discuz!论坛的动静分离,以及app的负载均衡,varnish起到个反向代理和缓存加速的功能. varnish1:192.168.1.151,172.16.0.51 app1:172.16.0.52 app3:172.16.0.54 varnish 简介 varnish的缓存方式: 1.malloc,通过malloc获取内存,简单,速度. 2

varnish页面缓存代理服务详解

一.Web缓存 1.web缓存 web缓存是可以自动保存常见文档副本的HTTP设备.当Web请求抵达缓存时,如果本地有"已缓存的"副本,可以从本地的存储设备而不是原始服务器设备中提取这个文档. 通过key-value键值方式缓存,key中保存了URL路径,value中保存了web内容,其均使用hash格式,算法保证能在海量数据中快速命中缓存内容 (1)缓存优点 1) 减少冗余的数据传输,节省带宽 2) 缓解网络瓶颈问题,无需耕宇宽带就能更快的加载页面 3) 降低对原始服务器的要求,服务

mysql状态查看 QPS/TPS/缓存命中率查看

mysql状态查看 QPS/TPS/缓存命中率查看 运行中的mysql状态查看 对正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态. (1)QPS(每秒Query量) QPS = Questions(or Queries) / seconds mysql > show  global  status like 'Question%'; (2)TPS(每秒事务量) TPS = (Com_commit + Com_rollback) / seconds mysql > show

varnish代理缓存讲解

一.varnish的基础知识 Varnsih工作原理 1.varnish工作原理 客户端请求到达varnish代理,child线程中的accept接收下请求进程,交给worker threads处理,worker threads先去object expiry找缓存, 没找到就去上游服务器backend lcatinon找到资源,返回varnish代理,查看是否符合缓存规则,符合则缓存,不符合则直接返回给客户端 2.缓存分类 代理缓存:客户端请求代理,先去找缓存,缓存没有,代理会去上游服务器找到资

Memcache 提高缓存命中率

最近手上某个项目跟新代码,新的代码里大量采用memcahce作为缓存.所以开始深入了解memcache的内存分配策略.以前就听说有个PHP写的memcache监控脚本,在网上搜索了一下,果断下载下来用 memcache.php.修改一下php文件代码配置 define('ADMIN_USERNAME','admin'); define('ADMIN_PASSWORD','admin'); $MEMCACHE_SERVERS[] = '127.0.0.1:11211′; $MEMCACHE_SER

高可用haproxy调度varnish服务器缓存后端动静分离集群架构

(1) 动静分离部署wordpress,动静都要能实现负载均衡,要注意会话的问题: (2) 在haproxy和后端主机之间添加varnish进行缓存: (3) 给出设计拓扑,写成博客: (4) haproxy的设定要求: (a) stats page,要求仅能通过本地访问使用管理接口:  (b) 动静分离: (c) 分别考虑不同的服务器组的调度算法: (5) haproxy高可用: 实验规划: 利用keepalived主备高可用两个haproxy服务器 对varnish缓存服务器做高可用 动态w