【问题标题】:Varnish: performance impact large ban listVarnish:性能影响大的禁用列表
【发布时间】:2014-03-18 09:36:39
【问题描述】:

我们想知道是否有人对 Varnish 的大量禁令有过经验。我们考虑了一种禁止策略,该策略可能导致每晚(在 X 百万缓存对象上)数百个(智能)禁止。

虽然我知道这高度依赖于环境变量,但我们想知道这是否会对性能产生重大影响。

【问题讨论】:

  • 我们还计划部署类似的策略。你有没有用这个投入生产,你能分享你的经验吗?这将非常有帮助。 =)

标签: reverse-proxy varnish


【解决方案1】:

Ban 占用大量 CPU 资源,因此应注意不要过度使用它们。如果这样做,CPU 使用率会上升,并且您会注意到每秒会执行大量的正则表达式匹配。

一般来说,一个禁令将匹配内存中输入的每个对象,因此每个禁令拥有一百万个对象将导致一百万个禁令评估。这听起来可能很多,但现代服务器速度很快,如今现代服务器每秒能够进行数千万次正则表达式匹配。我用了 4 年的笔记本电脑在单核上每秒运行 1500 万次正则表达式匹配,只是为了让您了解规模。

此外,Varnish 的另一个功能也发挥了作用。禁令潜伏者。 ban lurker 是一个线程,它遍历缓存并在请求之前评估试图杀死对象的禁令,从而减少禁令列表的大小。如果您的禁令不使用 req 对象,则它们是潜伏者评估的候选对象。如果您打算使用一些禁令,您应该注意以潜伏友好的方式编写您的禁令。所谓的“智能禁令”,你似乎很熟悉。

总而言之,我认为您的设置听起来很合理。发出几百个带有几百万个缓存对象的智能禁令可能会很好。当部署禁令时,当然会有一点 CPU 负载并且 TTFB 会有所增加,但我认为你会没事的。你可能想玩一些控制禁令潜伏者工作方式的参数,但首先尝试默认值,它们非常理智。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 2011-06-29
    • 2018-03-09
    • 1970-01-01
    • 2011-08-11
    相关资源
    最近更新 更多