我习惯跑步
varnishadm -T localhost:6082 debug.health
检查后端的健康状态,但我如何检查探测失败的详细原因(例如超时、错误的 http 状态代码)?
我习惯跑步
varnishadm -T localhost:6082 debug.health
检查后端的健康状态,但我如何检查探测失败的详细原因(例如超时、错误的 http 状态代码)?
在 Varnish 4.0 中,您可以查看所有后端的状态及其最近的探测成功率
varnishadm backend.list
找到 [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
至少对于 varnish 4,您还可以使用此命令来调试运行状况探测:
varnishadm debug.health