VPS 上 Varnish 与 Nginx 反向代理 那个更加出色?

2015-03-24 00:56:48 +08:00
 boro
如题,希望大家分享下自己的实际案例。
Thanks!
4582 次点击
所在节点    NGINX
9 条回复
sNullp
2015-03-24 01:26:20 +08:00
Varnish
见:/t/141198
sNullp
2015-03-24 01:26:56 +08:00
sorry 忘加了空格 /t/141198
lsylsy2
2015-03-24 01:30:53 +08:00
@sNullp 有测试过其他的诸如traffic server,squid(2和3)之类么?
sNullp
2015-03-24 01:36:38 +08:00
@lsylsy2 有测过 squid 3
如果我没记错的话,squid 不能完全支持这种慢速的 backend(在第一个请求完成前来第二个请求会再次访问 backend)。nginx 直到最近才有个参数可以号称支持,但是非常 buggy。
Showfom
2015-03-24 01:39:36 +08:00
大内存 Varnish
小内存 Nginx

当然如果可以的话上 SSD 性能更佳
sNullp
2015-03-24 01:43:49 +08:00
@lsylsy2 sorry, 我把 varnish 和 squid 说反了。
squid 是我最后使用的针对大文件的反代。就是因为 nginx 和 varnish 在这种场合下都有难处理的 behavior(要么是请求会被block很久,要么是 Range 请求返回 200 而不是 206)。
iCodex
2015-03-24 01:50:13 +08:00
@sNullp varnish 可以处理range的,但确实对大文件处理上不如squid
sNullp
2015-03-24 02:25:07 +08:00
@iCodex 是可以,但是就像我说的在文件很大仍在 streaming 的时候 range 请求被 block 直到整个文件传下来,要么也可以配置成再访问一次后端,但仍然很慢(没有利用第一次得到的数据)
可以用我上面那个脚本测试一下,当时不同 server 的 behavior 我现在也记不太清楚了。半年前的事情了。。。
lecher
2015-03-24 10:35:14 +08:00
这个还要看命中率的问题,就缓存处理效果来说
varnish可配置的参数非常多,纯内存处理非常快,用来做rest接口的反代非常好用,但是如果命中率太低热点数据不集中,会出现内存被挤满但是处理很慢的情况,因为内存满之后会反复清理掉数据,去后端重新获取数据。不适合做大数据缓存,比如图片请求处理的缓存,此外就是没有持久缓存磁盘的策略,重启服务之后需要做数据预热处理,才能上线使用,不然后端容易被请求堆满,有雪崩效应的风险。做纯反代
squid内存处理比varnish弱一些,但是优势在于本地存储策略可以配置的空间很大,用来做长时间不会变动的请求比较方便,比如静态html页面,图片。但是对于带参数请求的处理没有varnish的策略好,清理缓存的策略不太方便,用超时触发向后端确认请求是否失效的策略,需要设置时间的长度很微妙,需要根据实际情况去调整。重启服务只需要读取本地数据就能完成大部分数据的预热是优势。
nginx很轻量,基本功能就是反代,需要使用其它功能需安装扩展插件,缓存策略很弱,更新需要手动清理缓存,否则只能等超时重新缓存。
如果只有vps,建议nginx处理足矣,在请求量小内存也不是特别大的时候,nginx完全够用,varnish对内存需求太大,只做纯反代不缓存略显浪费。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/178920

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX