7

我习惯跑步

varnishadm -T localhost:6082 debug.health

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

4

3 回答 3

7

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

varnishadm backend.list
于 2016-05-03T18:02:33.917 回答
3

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

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

NB:2.0发布前有待打磨!

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

...

请注意,第二个单词表示当前状态,第一个单词 == "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

于 2013-08-06T11:48:36.100 回答
3

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

varnishadm debug.health
于 2015-10-06T18:04:02.833 回答