nginx proxy_cache、varnish&squid命中率测试汇总

3250阅读 0评论2010-09-14 skybin090804
分类:系统运维

   经过断断续续的测试,从对nginx proxy_cache和varnish不了解,到了解其缓存管理原理和缓存
清理原则,再到现在得出第一阶段结论,总算告一个小段落。(nginx proxy_cache的一些规则和varnish安装配置在以前的文章都提过,这里就不重复)

   以下是各cache命令率的图片数据:

Nginx proxy_cache:

             用随机函数模拟用户访问,并把数据分别热点和非热点(热点图片占100张,非热点图片
             293张,随机访问100-130张),总数据为692M;访问方式大概为热点访问5次,非热点访
             问1次,访问对象连点是随机生成;proxy_cache mem为100m,disk 为200m;命中率的
             计算方式,当前数据总数中HIT数/当前数据总数。DISK使用空间为201M
 
              
 
访问数全部命中率
4460.71
8990.82
14110.83
18910.84
23690.85
29080.85
34870.84
40250.83
46520.84
52680.84
58620.85
65460.85
71830.85
78710.84
84520.84
85900.84
                     


Squid cache:

用随机函数模拟用户访问,并把数据分别热点和非热点(热点图片占100张,非热点图片293张,随机访问
100-130张),总数据为692M;访问方式大概为热点访问5次,非热点访问1次,访问对象连点是随机生
成;squid_cache mem为100m,disk 为200m;命中率的结果由SQUID squid client工具查出。
DISK使用空间为196M



<
访问数全部命中率
5570.72
11660.55
16480.72
21630.69
27280.76
32300.55
37130.76
43290.69
49400.69
55360.62
61670.69
67990.65
74730.58
80740.69
85770.71
91490.72


Varnish cache:
用随机函数模拟用户访问,并把数据分别热点和非热点(热点图片占100张,非热点图片293张,随机访问
100-130张),总数据为692M;访问方式大概为热点访问5次,非热点访问1次,访问对象连点是随机生
成;squid_cache mem为100m,disk 为200m;命中率的结果由Varnish varnishstat工具查出。
DISK使用空间为292M



<
访问数全部命中率
5570.51
11140.71
14500.84
20070.87
25640.84
31210.83
36780.85
41350.87
45850.89
50420.91
55220.92
61330.92
67580.9
73860.87
80160.89
87460.87


后端机器的流量图:1:nginx 2:squid 3:varnish






从命中率/访问量图中发现命令率情况为:varnish > nginx proxy_cache > squid;
对后端影响的集中程度的情况为: nginx proxy_cache > squid > varnish;
对系统负载的影响基本相同,这个情况因为压的数据量不大所以应该明显不大;
综合几个数据,从可用性来说nginx proxy_cache比现在使用的squid要稳定,长时间来看
对后端机器影响nginx proxy_cache会不太大。具体情况要在大压力情况下或线上环境上
才能进一步说明。测试的过程中还了解了nginx proxy_cache、varnish缓存管理规则,缓存
替换规则。


模拟的测试脚本如下:

#!/bin/bash



function siege(){

   /usr/local/bin/siege -c 1 -r 232 -f cache_test.list > /dev/null 2> test.log.1 &
 
}

function wgetRANDOM(){

   number=$(($RANDOM%100))

   #echo $number
  
   [[ $number -eq 0 ]] && number=1
 
   url=`head -$number cache_test.list | tail -1`

  wget $url -O /dev/null 2> /dev/null

}

function wgetRANDOM_80(){
   number=$(($RANDOM%100))

   #echo $number

   [[ $number -eq 0 ]] && number=1

   url=`tail -$number cache_test.list | head -1`

  wget $url -O /dev/null 2> /dev/null

}

function main(){

for (( i=0;i<100;i++ ))
do
  wgetRANDOM
  sleep 1
done

}

function main_two(){

for (( i=0;i<130;i++ ))
do
  wgetRANDOM_80
  sleep 5
done

}

main &

main_two &

main &

main &
 
main &

main




上一篇:鼠标click一下,就按需安装应用
下一篇:varnish 安装配置文档