varnish warm up
适用场景
众所周知,varnish是一个十分强大的缓存服务器,比squid的性能要高出很多,但相比一个最大的缺点就是如果varnish进程挂掉或服务器down机,那么所有的缓存就全部丢失了。结果就是:
- 原来所有缓存的文件都需要全部回源,发生雪崩。
- 重新计算请求数据,影响效率
那么有什么好的方法在服务器重新解析之前,可以把所有的缓存都重新找回来类,答案是肯定的,这里我用到varnishreplay这一利器。
操作
varnishlog -D -a -w /var/log/varnish.log
如上相当于一个记录器,把用户的访问都写到一个log文件中
varnishreplay -a 127.0.0.1:80 -r /var/log/varnish.log
这个就是一个恢复的操作,它会对照varnish.log里面的东西重新把原来的缓存填满,相当于一个回放功能
我们可以把varnish.log进行日志切割,根据个人的业务保存预留的天数,比如在服务器挂掉的时候,我只重新加载1个星期的缓存,如果你把varnishreplay-r/var/log/varnish.log放到rc.local中,那么就无需你手工执行了。
适用场景延伸
- varnish缓存数据迁移将新varnish的backend设定为原varnish,基于varnishreplay拷贝缓存数据
- 原varnish宕机,数据重生分析varnishlog,得到缓存索引(uri),向后端预请求uri。
弊端
- varnishlog写硬盘带来的开销多大?
- 数据重生时,对varnish后端的压力控制
展望
期待varnish持久化缓存的问世
参考:
http://www.ywjt.org/index/archives/734.html
相关推荐
丁丁爸爸的技术 2020-03-04
王继敏 2020-01-15
huangzonggui 2020-01-18
leodengzx 2020-01-14
83374255 2011-08-23
87530399 2011-05-07
qlf00 2014-08-08
strburnchang 2015-04-03
zhangpuego 2011-12-05
haoxun0 2015-10-13
Caleb0 2015-09-04
蜀川居 2015-04-05
musicman 2013-06-07
阳光之吻 2019-06-21
lunhuishizhe 2013-09-10
零度源码 2012-07-13
whosemario 2011-10-17
tianshijianbing 2018-11-04