如何检查清漆探针失败的原因?

Gab*_*ego 6 varnish

我习惯了

varnishadm -T localhost:6082 debug.health
Run Code Online (Sandbox Code Playgroud)

检查后端运行状况,但如何检查探测失败的原因(例如超时,错误的http状态代码)?

Ted*_*val 6

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

varnishadm backend.list
Run Code Online (Sandbox Code Playgroud)

  • `varnishadm backend.list -p`用于旧视觉列表,包含更多细节 (2认同)

NIT*_*MAN 3

找到 [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
Run Code Online (Sandbox Code Playgroud)

...

请注意,第二个单词表示当前状态,第一个单词 ==“Still”表示未更改的状态。

  • 4--XS-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