緩存命中率計算公式:
緩存
MAIN.cache_hit / (MAIN.cache_hit + MAIN.cache_miss)bash
如下爲監控varnish緩存命中率的腳本,一共有兩個功能:ide
監控varnish總命中率,使用以上公式進行計算ci
監控最近一段時間內的命中率,方法是把當前得到的hit數和總數以變量形式輸出到文件中,下一次執行該腳本時從文件中獲取舊數據,使用當前數據與舊數據的差值進行計算命中率it
使用方法:ast
傳入totalHitRate 或 recentHitRate 以獲取對應的值,可結合zabbix作監控class
#!/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