阿赞 2012-11-13
适用场景
众所周知,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持久化缓存的问世
参考:
http://www.ywjt.org/index/archives/734.html