【发布时间】:2014-03-18 09:36:39
【问题描述】:
我们想知道是否有人对 Varnish 的大量禁令有过经验。我们考虑了一种禁止策略,该策略可能导致每晚(在 X 百万缓存对象上)数百个(智能)禁止。
虽然我知道这高度依赖于环境变量,但我们想知道这是否会对性能产生重大影响。
【问题讨论】:
-
我们还计划部署类似的策略。你有没有用这个投入生产,你能分享你的经验吗?这将非常有帮助。 =)
标签: reverse-proxy varnish
我们想知道是否有人对 Varnish 的大量禁令有过经验。我们考虑了一种禁止策略,该策略可能导致每晚(在 X 百万缓存对象上)数百个(智能)禁止。
虽然我知道这高度依赖于环境变量,但我们想知道这是否会对性能产生重大影响。
【问题讨论】:
标签: reverse-proxy varnish
Ban 占用大量 CPU 资源,因此应注意不要过度使用它们。如果这样做,CPU 使用率会上升,并且您会注意到每秒会执行大量的正则表达式匹配。
一般来说,一个禁令将匹配内存中输入的每个对象,因此每个禁令拥有一百万个对象将导致一百万个禁令评估。这听起来可能很多,但现代服务器速度很快,如今现代服务器每秒能够进行数千万次正则表达式匹配。我用了 4 年的笔记本电脑在单核上每秒运行 1500 万次正则表达式匹配,只是为了让您了解规模。
此外,Varnish 的另一个功能也发挥了作用。禁令潜伏者。 ban lurker 是一个线程,它遍历缓存并在请求之前评估试图杀死对象的禁令,从而减少禁令列表的大小。如果您的禁令不使用 req 对象,则它们是潜伏者评估的候选对象。如果您打算使用一些禁令,您应该注意以潜伏友好的方式编写您的禁令。所谓的“智能禁令”,你似乎很熟悉。
总而言之,我认为您的设置听起来很合理。发出几百个带有几百万个缓存对象的智能禁令可能会很好。当部署禁令时,当然会有一点 CPU 负载并且 TTFB 会有所增加,但我认为你会没事的。你可能想玩一些控制禁令潜伏者工作方式的参数,但首先尝试默认值,它们非常理智。
【讨论】: