zoukankan      html  css  js  c++  java
  • varnish-4.x VCL之grace mode

    varnish-4.x VCL之grace mode&retry

    grace mode
    几点说明:
    graced object是己经过期了但仍然保留在cache中的对象
    当varnish使用graced object的时候称为grace mode
    当后端server不可用时,grace mode仍然可以用graced object来响应客户端的请求
    beresp.grace定义的时间为beresp.ttl过期后的仍然可用的时间
    grace mode的主要目标是,当热度非常高的对象过期了,但此时,一直等待后端的新见容无果,这时对于大量的客户端对列仍然用graced object来响应

    示例:
    后端HTTP Header
    "Cache-control: max-age=60, stale-while-revalidate=30"
    或VCL
    set req.ttl = 60s;
    set beresp.grace = 30s;

    • 50s: Normal delivery
    • 62s: Normal cache miss, but grace mode possible
    • 80s: Normal cache miss, but grace mode possible
    • 92s: Normal cache miss, object is removed from cache
    <=req.ttl直接返回给客户,beresp.grace清除cache重新向后端server请求
    提示: 缓存对象永不过期,可以beresp.grace = 0

    测试:
    通过apache cgi脚本
    cat >/var/www/cgi-bin/test.cgi <<HERE
    #!/bin/sh
    sleep 10
    echo "Content-type: text/plain"
    echo "Cache-control: max-age=10, stale-while-revalidate=20"
    echo
    echo "Hello world"
    date
    HERE
    修改max-age,stale-while-revalidate的值,测试HTTP Header

    retry
    sub vcl_backend_response {
        if (beresp.status == 503) {
        return (retry);
        }
    }
    如果retry的次数达到了max_retries, 就会触发 vcl_backend_error.
  • 相关阅读:
    函数式编程
    go语言中strings包常用方法
    Go--实现两个大数相乘
    谷歌插件
    函数的防抖---js
    函数截流---js
    函数的记忆----函数性能优化
    word-break、word-wrap、white-space区别
    overflow属性
    利用边框写一个三角形
  • 原文地址:https://www.cnblogs.com/lixuebin/p/10814125.html
Copyright © 2011-2022 走看看