【问题标题】:How can I check why a Varnish probe fails?如何检查 Varnish 探针失败的原因?
【发布时间】:2013-08-05 23:37:06
【问题描述】:

我习惯跑步

varnishadm -T localhost:6082 debug.health

检查后端的健康状态,但如何详细检查探测失败的原因(例如超时、错误的 http 状态码)?

【问题讨论】:

    标签: varnish


    【解决方案1】:

    在 Varnish 4.0 中,您可以查看所有后端的状态及其最近的探测成功率

    varnishadm backend.list
    

    【讨论】:

    • varnishadm backend.list -p 获取更详细的旧视觉列表
    【解决方案2】:

    找到 [1] 有点棘手,但是:

    每个轮询都记录在共享内存日志中,如下所示:

    注意:在 2.0 发布之前有待完善!

    0 Backend_health - b0 Still healthy 4--X-S-RH 9 8 10 0.029291 0.030875 HTTP/1.1 200 Ok
    

    ...

    注意第二个词表示当前状态,第一个词 word == "Still" 表示状态不变。

    • 4--X-S-RH -- 指示最新轮询如何进行的标志
      • 4 -- IPv4 连接建立
      • 6 -- IPv6 连接已建立
      • x -- 请求传输失败
      • X -- 请求传输成功
      • s -- TCP 套接字关闭失败
      • S -- TCP 套接字关闭成功
      • r -- 读取响应失败
      • R -- 读取响应成功
      • H -- 对结果很满意
    • 9 -- 上次 .window 投票中的好投票数
    • 8 -- .threshold(见上文)
    • 10 -- .window(见上文)
    • 0.029291 -- 此轮询的响应时间,如果失败则为零
    • 0.030875 -- 良好投票响应时间的指数平均值 (r=4)。
    • HTTP/1.1 200 Ok -- 来自后端的 HTTP 响应。

    所以你应该使用 varnishlog 来获取失败的详细信息。

    [1]https://www.varnish-cache.org/trac/wiki/BackendPolling#SHMlog

    【讨论】:

    • 感谢@NITEMAN,找到问题的根本原因对我来说仍然有点棘手:Backend_health - MainProd 仍然健康 4--X--- 5 4 6 0.000000 0.145350 没有 HTTP 状态代码或其他关于错误的提示。关于如何调试它的任何想法?
    • 我已经扩展了文档摘录。在您的情况下,Varnish 执行请求,但后端响应永远不会回到 Vanish,因此很可能是超时。更好地检查后端日志以获取探测结果。
    • 好的,非常感谢@NITEMAN 我会尝试在后端调试问题。
    【解决方案3】:

    至少对于 varnish 4,您还可以使用此命令来调试运行状况探测:

    varnishadm debug.health
    

    【讨论】:

    • 现在好像是varnishadm backend.list
    猜你喜欢
    • 2019-03-23
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    相关资源
    最近更新 更多