varnish - 重新加载后清漆 FetchError 长达 30 秒
问题描述
我有一个带有 26 个后端的 varnish 6 设置,在 ram 升级后我遇到了一个问题,它在重新加载大约 15-30 秒后抛出 503 错误,并且 varnishlog 说它 - FetchError backend reload_20190417_131210_1488.server15: unhealthy
来自 varnishlog 的完整标题:
- << BeReq >> 106235039
- 开始 beeq 106235038 获取
- 时间戳开始:1555506951.751066 0.000000 0.000000
- Bereq 方法 GET
- BereqURL /_files/b6/ee/59/4f/af/b6ee594fafd3f13556216d89452f3dd4_1.jpg
- Bereq 协议 HTTP/1.1
- BereqHeader 用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
- BereqHeader 接受:image/webp,image/apng,image/ , /*;q=0.8
- BereqHeader 引荐来源网址:http ://www.example.com/
- BereqHeader 接受语言:lv
- BereqHeader x 范围:字节=1135466-1135466
- BereqHeader 优雅:无
- BereqHeader X-Forwarded-For:84.237.232.159
- BereqHeader 主机:www.example.com
- BereqHeader 代理能力:key=ESI/1.0
- BereqHeader 接受编码:gzip
- BereqHeader X-清漆:106235039
- VCL_call BACKEND_FETCH
- VCL_return 获取
- FetchError后端reload_20190417_131210_1488.server15:不健康
- 时间戳Beresp:1555506951.751106 0.000040 0.000040
- 时间戳错误:1555506951.751111 0.000045 0.000005
- Beresp 协议 HTTP/1.1
- Beresp状态 503
- BerespReason 服务不可用
- BerespReason 后端提取失败
- BerespHeader 日期:2019 年 4 月 17 日星期三 13:15:51 GMT
- BerespHeader 服务器:清漆
- VCL_call BACKEND_ERROR
- BerespHeader 内容类型:text/html;字符集=utf-8
- BerespHeader 重试后:5
- VCL_return 交付
- 存储 malloc 瞬态
- 长度 286
- BereqAcct 0 0 0 0 0 0
- 结尾
我们有 16 GB ram 将 malloc 8 GB,现在它是 32 GB 和 23 GB malloc。我们正在使用带有 VSF 的 varnish 6,所以它的设置非常复杂,但它工作得很好。它编译得很好,没有任何错误,但在重新加载后向某些域抛出 503 backend fetch fail。
解决方案
FetchError 很清楚,后端有病。使用 检查它varnishadm backend.health
,它应该告诉你什么是失败的。
显示您的后端定义也会有所帮助。
推荐阅读
- erlang - 在不使用 try-catch 的情况下处理函数 Erlang 中的错误参数
- javascript - 音频元素中的自动播放属性偶尔工作
- mysql - MySQL - 在 varchar 列上选择 0(零)作为条件返回所有行?
- c++ - 是否可以有一个模板化的 c++ 类来通用实现接口 T 并将所有调用转发到实现 T 的包装对象?
- javascript - 如何使用 JS 和 Golang 将视频上传到 Google Drive?
- c# - 控制台应用程序中的 OAuth2 访问令牌
- javascript - 从父组件或祖父组件清除 React 组件中的输入
- vb.net - Blank.Items.Add("Some String Here") Visual Basic
- kubernetes - 如何将 kubernetes pod 暴露给外部 IP?
- azure-iot-hub - 使用模块和调用的方法重新启动 iot edge 运行时