【问题标题】:Varnish hit-for-pass means?清漆一击换传是什么意思?
【发布时间】:2012-09-23 09:03:22
【问题描述】:

由于 Varnish 版本 3 具有一些用于不同操作的对象。

例如,当它必须从后端检索数据时使用 pass。当它在缓存中找到请求内容时使用命中。

但我无法理解“hit-for-pass”的用法。清漆什么时候用?我没有在网上找到任何有用的材料让我清楚。

【问题讨论】:

    标签: varnish varnish-vcl


    【解决方案1】:

    一个 hit_for_pass 对象用于针对后端服务器优化获取过程。

    对于普通的缓存未命中,Varnish 会将请求相同缓存对象的所有客户端排队,并向后端发送单个请求。这通常是最快的,让后端处理单个请求,而不是同时处理 n 个请求。

    请记住,有些后端会花费大量时间来准备对象; 10 秒并不少见。如果这是首页 HTML,并且您对它有 3000 个请求/秒,那么只发送一个后端请求就很有意义。

    当 Varnish 获取对象后发现它无法缓存时,就会出现问题。造成这种情况的原因可能是后端发送“Cache-Control: max-age=0”,或者(更常见的)一个 Set-Cookie 标头。在这种情况下,您有 3,000 到 30,000 个客户端 (3k req/s * 10sec) 在队列中处于空闲状态,并且对于这些客户端中的每一个,必须完成相同的缓慢的一次一个后端请求才能为它们提供服务。这会破坏您的网站响应时间。

    所以 Varnish 通过创建一个 hit_for_pass 对象来保存这个请求不能被缓存的决定。

    在对同一 URL 的下一次请求中,缓存查找将返回一个 hit_for_pass 对象。这表明可以同时进行多个提取。您的后端可能对此不太满意,但至少 Varnish 不会无缘无故地让客户端排队。

    【讨论】:

    • 您能否详细解释一下“这表明可能同时进行多个提取。”?特别是这个信号部分?谢谢
    • @JohnRoca Signaling 可能是错误的词。找到一击即通过让连接跳过对象等待列表行为。想想“允许多次提取”,如果这样更清楚的话。
    猜你喜欢
    • 2012-07-10
    • 2016-05-28
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2017-06-11
    • 2018-03-05
    相关资源
    最近更新 更多