Varnish 6.4.0中的更改

有关将当前Varnish部署更新到新版本的信息,请参见 升级到Varnish 6.4.0

有关Varnish更改的更详细的技术说明,以及指向已修复的问题和已合并的拉入请求的链接,请参阅 change log

华而不实

臭虫

已经修复了许多错误。

泛型参数处理

有些参数有依赖关系,现在有了更好的文档记录。例如 thread_pool_min 不能增加到以上 thread_pool_max ,现已在手册中注明。

在运行的Varnish实例上, param.show 命令将显示实际的最小值或最大值,但尝试 param.set 如果参数高于或低于其动态最大值或最小值,则会在错误消息中指出失败原因:

varnish> param.show thread_pool_reserve
200
thread_pool_reserve
        Value is: 0 [threads] (default)
        Maximum is: 95

        [...]

varnish> param.show thread_pool_min
200
thread_pool_min
        Value is: 100 [threads] (default)
        Maximum is: 5000

        [...]

varnish> param.set thread_pool_reserve 100
106
Must be no more than 95 (95% of thread_pool_min)

(attempting to set param 'thread_pool_reserve' to '100')

期待在未来的版本中有进一步的改进。

参数

行为的改变

  • 这个 if-range 现在处理标头,允许客户端有条件地请求基于日期或ETag的范围。

  • 输出VCC警告也适用于通过 varnishd -f 选择权

对VCL的更改

  • “无后端”的新语法::

    backend dummy none;
    
    sub vcl_recv {
        set req.backend_hint = dummy;
    }
    

    无论何时出于语法原因需要后端,都可以使用它。这个 none 后端将失败的任何尝试使用它。另一个目的是避免在不需要时声明伪后端:例如,活动的VCL只将请求传递给具有 return (vcl(...)) 语法或设置依赖于来自VMOD的动态后端。

  • std.rollback(bereq) 现在可以安全使用了,请参见 VMOD标准-Varnish标准模块 了解更多细节。

  • 故意通过以下方式关闭后端请求 return(abandon)return(fail)return(error) 不再被视为提取失败。

  • 数字表达式现在可以是负数或负数,如下所示 set resp.http.ok = -std.integer("-200");

  • 这个 += 运算符现在可用于标题和响应正文::

    set resp.http.header += "string";
    

VCL变量

  • 添加更多针对超时的VCL控制 sess.timeout_lingersess.send_timeoutsess.idle_send_timeout 变量以相同的名称对应参数。

VMODs

Varnishlog

  • A Notice 已添加VSL标签。

  • 如果日志记录使用“双引号”分隔,则它们可以安全地包含空字段或包含空格的字段。这一点适用于 SessErrorBackend_health

瓦尼沙德姆

  • 新的 pid 命令,以获取主进程ID并可选地缓存进程ID,例如从 varnishadm

Varnish状态

  • 添加vi样式的CTRL-f/CTRL-b用于向下/向上翻页到交互 varnishstat

  • 这个 MAIN.sess_drop 柜台不见了。

  • 增列 rx_close_idle 单独记账的计数器在以下情况下 sess.timeout_idle / timeout_idle 已经到达了。

  • sess.send_timeout / send_timeout 被联系不再被报告为 MAIN.sc_rem_close ,但作为 MAIN.sc_tx_error

针对开发人员和VMOD作者的更改

一般信息

  • 新的配置开关: --with-unwind 。阿尔卑斯Linux似乎提供了一种 libexecinfo 实现在被Varnish调用时崩溃,这提供了使用 libunwind 取而代之的是。

  • 该选项 varnishtest -W 已经不在了,同样可以通过 varnishtest -p debug=+witness 。一个 witness.sh 源代码树中提供了一个脚本,用于生成Graphviz点文件并从测试日志中检测潜在的锁定周期。

  • 介绍 struct reqtop 保存有关ESI TOP请求的信息,并 PRIV_TOP

  • 新的或改进的Coccinelle语义补丁,可能对VMOD或实用程序作者有用。

  • 增列 VSLs()VSLbs() 用于记录的函数 STRANDS 转到VSL。

  • 增列 WS_VSB_new() / WS_VSB_finish() 适用于工作空间上的VSB。

  • 增列 v_dont_optimize 属性宏来指示编译器(在此版本中仅限GCC)不要优化函数。

  • 增列 VSB_tofile()libvarnishapi

VMODs

  • 现在,VMOD作者可以定制动态后端的连接池。现在计算散列以确定唯一性,并且后端声明可以提供任意数据来影响池。

  • VRB_Iterate() 签名已更改。

  • VRT_fail() 现在也适用于导演代码。

  • body_statusreq_body_status 已经崩溃成一种类型。尤其是, REQ_BODY_* 枚举现在已被替换为 BS_*

  • 增列 VRT_AllocStrandsWS() 作为在工作空间上分配绞线的实用函数。

eof