我习惯了
varnishadm -T localhost:6082 debug.health
Run Code Online (Sandbox Code Playgroud)
检查后端运行状况,但如何检查探测失败的原因(例如超时,错误的http状态代码)?
在Varnish 4.0中,您可以看到所有后端的状态及其最近的探测成功率
varnishadm backend.list
Run Code Online (Sandbox Code Playgroud)
找到 [1] 有点困难,但是:
每次轮询都会记录在共享内存日志中,如下所示:
注:2.0发布前还有待完善!
Run Code Online (Sandbox Code Playgroud)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