经过断断续续的测试,从对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
访问数 | 全部命中率 |
446 | 0.71 |
899 | 0.82 |
1411 | 0.83 |
1891 | 0.84 |
2369 | 0.85 |
2908 | 0.85 |
3487 | 0.84 |
4025 | 0.83 |
4652 | 0.84 |
5268 | 0.84 |
5862 | 0.85 |
6546 | 0.85 |
7183 | 0.85 |
7871 | 0.84 |
8452 | 0.84 |
8590 | 0.84 |
Squid cache:
用随机函数模拟用户访问,并把数据分别热点和非热点(热点图片占100张,非热点图片293张,随机访问
100-130张),总数据为692M;访问方式大概为热点访问5次,非热点访问1次,访问对象连点是随机生
成;squid_cache mem为100m,disk 为200m;命中率的结果由SQUID squid client工具查出。
DISK使用空间为196M
<
访问数 | 全部命中率 |
557 | 0.72 |
1166 | 0.55 |
1648 | 0.72 |
2163 | 0.69 |
2728 | 0.76 |
3230 | 0.55 |
3713 | 0.76 |
4329 | 0.69 |
4940 | 0.69 |
5536 | 0.62 |
6167 | 0.69 |
6799 | 0.65 |
7473 | 0.58 |
8074 | 0.69 |
8577 | 0.71 |
9149 | 0.72 |
Varnish cache:
用随机函数模拟用户访问,并把数据分别热点和非热点(热点图片占100张,非热点图片293张,随机访问
100-130张),总数据为692M;访问方式大概为热点访问5次,非热点访问1次,访问对象连点是随机生
成;squid_cache mem为100m,disk 为200m;命中率的结果由Varnish varnishstat工具查出。
DISK使用空间为292M
<
访问数 | 全部命中率 |
557 | 0.51 |
1114 | 0.71 |
1450 | 0.84 |
2007 | 0.87 |
2564 | 0.84 |
3121 | 0.83 |
3678 | 0.85 |
4135 | 0.87 |
4585 | 0.89 |
5042 | 0.91 |
5522 | 0.92 |
6133 | 0.92 |
6758 | 0.9 |
7386 | 0.87 |
8016 | 0.89 |
8746 | 0.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
阅读(3094) | 评论(0) | 转发(0) |