varnish关于Grace mode和Saint mode这两中模式配置

Varnish的一个关键特色就是它有能力防御 web和应用服务器宕机。
Grace mode
当几个客户端请求同一个页面的时候,varnish只发送一个请求到后端服务器,然后让那个其他几个请求挂起等待返回结果,返回结果后,复制请求的结果发送给客户端。
如果您的服务每秒有数千万的点击率,那么这个队列是庞大的,没有用户喜欢等待服务器响应。为了使用过期的 cache 给用户提供服务,我们需要增加他们的 TTL,保存所有cache 中的内容在 TTL过期以后30 分钟内不删除,使用以下VCL:

sub vcl_fetch {
   set beresp.grace = 30m;
}
Varnish 还不会使用过期的目标给用户提供服务,所以我们需要配置以下代码,在cache过期后的15 秒内,使用旧的内容提供服务:
sub vcl_recv {
   set req.grace = 15s;
}

你会考虑为什么要多保存过去的内容 30 分钟?当然,如果你使用了健康检查,你可以通过健康状态设置保存的时间:

if (! req.backend.healthy) {
    set req.grace = 5m;
} else {
    set req.grace = 15s;
}

Saint mode
有时候,服务器很古怪,他们发出随机错误,您需要通知 varnish 使用更加优雅的方式处理它,这种方式叫神圣模式(saint mode)。Saint mode允许您抛弃一个后端服务器或
者另一个尝试的后端服务器或者 cache中服务陈旧的内容。让我们看看 VCL中如何开启这个功能的:

sub vcl_fetch {
   if (beresp.status == 500) {
     set beresp.saintmode = 10s;
     restart;
   }
   set beresp.grace = 5m;
}

当我们设置 beresp.saintmode 为 10 秒,varnish 在 10 秒内将不会访问后端服务器的这个 url。如果有一个备用列表,当重新执行此请求时您有其他的后端有能力提供此服务内容,varnish会尝试请求他们,当您没有可用的后端服务器,varnish将使用它过期的 cache提供服务内容。
它真的是一个救生员。
God mode

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值