varnish or squid ?

上varnish已经有一段时间了. 虽然其性能确实不错, 不过, 稳定性还是欠佳.
我现在用的是trunk版本, 其正式版经常在高负载的时候crash. 虽然这个问题
在其mailinglist中也不少人提出,但是似乎没有特别明确的解决方案, 根据某些人的
只言片语,似乎在trunk中能够解决. 我更新到trunk,虽然crash的机会少了,但是仍时有
发生,最后,我的解决方案是用monit来监控和重启(虽然varnish自身号称有autorestart
的功能,但是在我的情况里没有用,重试几次就彻底歇了).

速度是快了,不过如果缓存满了,那么就性能是急剧下降的. 对于后端的访问次数增加很多,
这种情况下,各种不道德的爬虫就是灾难了.
因此,有必要监控你的cache是否已经满了, 如果满了,最后就重启一下.
不要指望它的过期和自动交换了, 会死的很难看的.

实际上,以前用squid的时候也遇到这个问题. varnish由于是纯内存的web加速的cache,
因此如果超出了,就要用swap. 这时候,和squid一样,都是光屁股,没啥起色.

其实,对我来说,squid似乎更为合适,因为我不希望使用一个纯内存的cache服务器,因为,
我实际上要的是一个mirror,呵呵.

varnish/squid的purge方法都不太适合我的情况. varnish支持正则批量清楚一批url,不过
必须使用客户端,而且,我至今也不清楚如果不同host相同的url下如何区分?

其实,作mirror,从应用程序角度看,也很好实施:异步复制更新的文件到各个mirro节点去,
还是用perl,可以轻松搞定. 这样,就是直接nginx了.

一个更好的想法是,干脆使用perbal得了. 为什么? 因为我需要根据一些逻辑,能够有选择的清除
cache. perlbal可以写plugin,当主服务器发生变化,只需要删除本地缓存的文件即可.
其他的时候,文件从不过期. perlbal前面可以挂上nginx.

最后,也可以考虑使用nginx的proxy_store,然后用perl来删除store文件?
然后,又想到,其实squidclient也可以实现….
晕了
…..

说到nginx,
nginx稳定版已经升到0.6.31了.
现在国内热捧lighty的人多,用nginx的少.
我二者都用过,还是觉得nginx让人放心.
至于性能,说实在,没发现和lighty有多大的差距.

想轻松,简单,可靠,还是用nginx

;-)

Comments

3 Responses to “varnish or squid ?”

  1. 在线代理 on May 18th, 2008 12:06 pm

    订阅了你的rss,似乎不是个高产的blogger。。

    我也觉得nginx好用。特别是lighttpd的配置文件格式 ,太让人没法适应了,还不如xml格式的 。

  2. nightsailer on May 18th, 2008 7:15 pm

    我是一个懒人, 更谈不上高产, 不太值得订阅.

  3. 无聊空间 on August 8th, 2008 12:34 pm

    博主谦虚了,其实你说的好多也没有听过,不高产无所谓,精就ok了

Leave a Reply