华而不实

HTTP加速器守护程序

手册部分:

1

SYNOPSIS

华而不实

[-a [name=][listen_address[,PROTO]] [-b [host[:port]|path]] [-C] [-d] [-F] [-f config] [-h type[,options]] [-I clifile] [-i identity] [-j jail[,jailoptions]] [-l vsl] [-M address:port] [-n workdir] [-P file] [-p param=value] [-r param[,param...]] [-S secret-file] [-s [name=]kind[,options]] [-T address[:port]] [-t TTL] [-V] [-W waiter]

华而不实 [-x parameter|vsl|cli|builtin|optstring]

华而不实 [-?]

DESCRIPTION

这个 varnishd 守护程序接受来自客户端的HTTP请求,将它们传递到后端服务器,并缓存返回的文档,以更好地满足将来对同一文档的请求。

OPTIONS

基本选项

-a <[name=][listen_address[,PROTO]]>

在指定的LISTEN_ADDRESS上接受客户端请求(见下文)。

日志中引用了名称。如果未指定名称,则使用“a0”、“a1”等。

Proto可以是“HTTP”(默认)或“Proxy”。代理协议的版本1和版本2都可以使用。

允许使用多个-a参数。

如果未给出参数,则默认为 -a :80 将侦听所有IPv4和IPv6接口。

-a <[name=][ip_address][:port][,PROTO]>

IP_ADDRESS可以是主机名(“localhost”)、IPv4点分四元组(“127.0.0.1”)或括在方括号中的IPv6地址(“ [::1] “)

如果未指定端口,则使用端口80(Http)。

至少需要IP_ADDRESS或PORT之一。

-a <[name=][path][,PROTO][,user=name][,group=name][,mode=octal]>

(VCL4.1及更高版本)

接受Unix域套接字上的连接。路径必须是绝对路径(“/Path/to/listen.sock”)或“@”,后跟抽象套接字的名称(“@myvarnishd”)。

USER、GROUP和MODE子参数可用于指定套接字文件的权限--使用用户和组的名称,以及模式的三位八进制值。这些子参数不适用于抽象套接字。

-b <[host[:port]|path]>

使用指定的主机作为后端服务器。如果未指定端口,则默认为8080。

如果值为 -b begins with /, it is interpreted as the absolute path of a Unix domain socket to which Varnish connects. In that case, the value of `` -b``必须满足以下条件 .path 后端声明的字段,请参见 VCL 。具有Unix套接字地址的后端只能与VCL版本>=4.1一起使用。

-b只能使用一次,并且不能与f一起使用。

-f config

使用指定的VCL配置文件,而不是内置的默认设置。看见 VCL 有关VCL语法的详细信息。

如果使用了一个-f选项,那么从该文件加载的VCL实例将被命名为“BOOT”,并立即变为活动状态。如果使用了多个-f选项,则VCL实例将按照与-f参数对应的顺序命名为“boot0”、“boot1”,依此类推,最后一个命名为“boot”,它将变为活动状态。

必须指定-b或一个或多个-f选项,但不能同时指定这两个选项,并且不能同时省略它们,除非使用-d启动 varnishd 在调试模式下。如果将空字符串指定为唯一的-f选项,则 varnishd 在不启动工作进程的情况下启动,管理进程将接受CLI命令。您还可以将空的-f选项与初始化脚本(-i选项)结合使用,如果在初始化结束时有活动的VCL,则将启动子进程。

当与相对文件名一起使用时,将在 vcl_path 。可以在使用之前设置此路径 -f 选项带有 -p 选择。在启动期间, varnishd 不会抱怨不安全的VCL路径:与 varnish-cli(7) 以后可以远程访问,从 varnishd 需要本地权限。

-n workdir

共享内存、编译的VCLS等的运行时目录。

在性能关键型应用程序中,此目录应位于RAM支持的文件系统上。

相对路径将被追加到 /var/run/ (注:Varnish的二进制程序包可能已根据平台进行了调整。)

缺省值为 /var/run/varnishd (注:如上。)

文档选项

对于这些选项, varnishd 将信息打印到标准输出并退出。当使用-x选项时,它必须是唯一的选项(它以reStruredText(也称为RST)格式输出文档)。

-?

打印用法消息。

-x parameter

打印运行时参数的文档(-p选项),请参见 List of Parameters

-x vsl

打印Varnish共享内存日志中使用的标记的文档,请参见 VSL

-x cli

打印命令行界面的文档,请参见 Varnish-CLI

-x builtin

打印默认VCL程序的内容 builtin.vcl

-x optstring

将optstring参数打印到 getopt(3) 以帮助编写包装器脚本。

运营选项

-F

不要分叉,在前台跑。只能指定-F或-d之一,并且-F不能与-C一起使用。

-T <address[:port]>

在指定的地址和端口上提供管理接口。看见 Varnish-CLI 以获取管理命令的文档。要禁用管理界面,请使用 none

-M <address:port>

连接到此端口并提供命令行界面。可以把它想象成一个反转的壳。当使用-M运行并且没有定义后端时,子进程(缓存)最初不会启动。

-P file

将进程的PID写入指定的文件。

-i identity

指定Varnish服务器的标识。可以使用以下命令访问 server.identity 来自VCL的。

服务器标识用于 received-by 领域: Via 由Varnish生成的标头。因此,它必须是由HTTP语法定义的有效令牌。

如果未指定,则输出 gethostname(3) 在这种情况下,语法被认为是正确的。

-I clifile

执行给定文件中的管理命令 clifile 在启动辅助进程之前,请参见 CLI Command File

调整选项

-t TTL

指定缓存对象的默认生存时间(TTL)。这是指定 default_ttl 运行时参数。

-p <param=value>

将param指定的参数设置为指定值,请参见 List of Parameters 了解更多细节。可以多次使用此选项来指定多个参数。

-s <[name=]type[,options]>

使用指定的存储后端。看见 Storage Backend 一节。

此选项可多次用于指定多个存储文件。名称在日志、VCL、统计等中被引用,如果不指定名称,则使用“s0”、“s1”等。

-l <vsl>

指定VSL记录的空间大小,速记为 -p vsl_space=<vsl> 。像‘K’和‘M’这样的缩放后缀最大可用到(G)千字节。看见 vsl_space 以获取更多信息。

安全选项

-r <param[,param...]>

将列出的参数设置为只读。这为系统管理员提供了一种限制Varnish CLI可以执行的操作的方法。考虑将参数设置为 cc_commandvcc_allow_inline_cvmod_path 只读,因为这些可能会被用来从CLI提升权限。

-S secret-file

包含用于授权访问管理端口的密码的文件的路径。要禁用身份验证,请使用 none

如果未提供此参数,则从系统PRNG提取的秘密将写入名为 _.secret 在工作目录中(请参见 opt_n ),并具有已启动Varnish的用户的默认所有权和权限。

因此,希望委派对VARNISH的控制的用户可能希望创建具有适当权限的自定义机密文件(即。可由Unix组读取以将控制委派给)。

-j <jail[,jailoptions]>

指定要使用的监禁机制。看见 Jail 一节。

高级、开发和调试选项

-d

启用调试模式:父进程通过stdin/stdout上的CLI连接在前台运行,子进程必须使用CLI命令显式启动。终止父进程也会终止子进程。

只能指定-d或-F之一,并且-d不能与-C一起使用。

-C

打印编译成C语言的VCL代码并退出。使用-f选项指定要编译的VCL文件。-f或-b必须与-C一起使用,-C不能与-F或-d一起使用。

-V

显示版本号并退出。这肯定是唯一的选择。

-h <type[,options]>

指定哈希算法。看见 Hash Algorithm 部分获取支持的算法列表。

-W waiter

指定要使用的服务员类型。

哈希算法

以下散列算法可用:

-h critbit

自缩放树结构。Varnish缓存2.1及更高版本中的默认哈希算法。与更传统的B树相比,Critbit树几乎是完全无锁的。除非你确定自己在做什么,否则不要改变这一点。

-h simple_list

一个简单的双向链表。不推荐用于生产。

-h <classic[,buckets]>

标准哈希表。散列键是对象URL的CRC32,取哈希表的大小为模。每个表条目指向共享相同散列键的元素列表。Buckets参数指定哈希表中的条目数。默认值为16383。

存储后端

定义存储后端的参数格式为:

-s <[name]=kind[,options]>

如果 name 被省略,则Varnish将命名存储 s N ,以 s0 和递增 N 每一个新的存储空间。

kindoptions 详情见下文。

存储可以在VCL AS中使用 storage. name ,所以,举例来说,如果 myStorage 被定义为 -s myStorage=malloc,5G ,它可以像这样使用在VCL中::

set beresp.storage = storage.myStorage;

一份特别的 nameTransient 这是由于传球、命中未命中或命中传球而导致的不可缓存对象的默认存储。

如果没有 -s 给出选项,默认为::

-s default,100m

如果没有 Transient 已定义存储,默认为未绑定 default 将存储定义为::

-s Transient=default

以下存储类型和选项可用:

-s <default[,size]>

默认存储类型解析为 umem 如果可用,并且 malloc 否则的话。

-s <malloc[,size]>

Malloc是一个基于内存的后端。

-s <umem[,size]>

Uem是一个存储后端,在可用的平台上比Malloc更高效。

参见第章中关于umem的章节。 Storage backendsThe Varnish Users Guide 了解更多细节。

-s <file,path[,size[,granularity[,advice]]]>

文件后端将数据存储在磁盘上的文件中。将使用mmap访问该文件。请注意,此存储不提供缓存持久性。

该路径是必填项。如果路径指向某个目录,则会在该目录中创建一个临时文件,并立即取消链接。如果路径指向不存在的文件,则将创建该文件。

如果省略了SIZE,并且路径指向大小大于零的现有文件,则将使用该文件的大小。如果不是,则报告错误。

粒度设置分配块大小。默认为系统页大小或文件系统块大小,取较大者。

建议告诉内核如何 varnishd 预期使用此映射区域,以便内核可以选择适当的预读和缓存技术。可能的值包括 normalrandomsequential ,分别对应于MADV_NORMAL、MADV_RANDOM和MADV_SEQUENCED MADVISE()建议参数。默认为 random

-s <persistent,path,size>

永久存储。Varnish将对象存储在文件中,以确保 most 在计划内或计划外关闭Varnish的情况下,对象的安全。持久存储后端有多个问题,可能会从Varnish的未来版本中删除。

监狱

Varnish监狱是对各种特定于平台的方法的概括,以减少Varnish进程的特权。他们可能有具体的选择。可用的监狱包括:

-j <solaris[,worker=`privspec`]>

减少 privileges(5)varnishd 和子过程到最低要求集合。仅在具有 setppriv(2) 打电话。

可选的 worker 参数可用于传递权限规范(请参见 ppriv(1) ),以扩展Varnish工人进程的有效集合。虽然定制VMOD可能需要扩展的特权, not 使用 worker 选项总是更安全。

向工作进程授予基本权限的示例:

-j solaris,worker=basic
-j <unix[,user=`user`][,ccgroup=`group`][,workuser=`user`]>

在以下情况下在所有其他平台上使用默认设置 varnishd 以有效的uid 0开始(“以根用户身份”)。

unix 启动监狱机制后,Varnish将切换到子进程的替代用户,并尽可能更改主进程的有效uid。

可选的 user 参数指定要使用的替代用户。默认为 varnish

可选的 ccgroup 参数指定要添加到要求访问c编译器的Varnish子进程中的组。没有违约。

可选的 workuser 参数指定要用于辅助进程的替代用户。默认为 vcache

给出的用户 userworkuser 参数需要具有相同的主要(“登录”)组。

为具有组名的默认用户设置系统 varnish ,可以使用与以下内容类似的Shell命令::

groupadd varnish
useradd -g varnish -d /nonexistent -s /bin/false \
  -c "Varnish-Cache Daemon User" varnish
useradd -g varnish -d /nonexistent -s /bin/false \
  -c "Varnish-Cache Worker User" vcache
-j none

最后的监狱选择:有监狱机制 none ,Varnish将使用启动时的权限运行所有进程。

管理界面

如果指定了-T选项, varnishd 将在指定的地址和端口上提供命令行管理界面。建议通过以下方式连接到命令行管理界面 瓦尼沙德姆

中记录了可用的命令 Varnish-CLI

CLI命令文件

使用-i选项可以在以下情况下运行任意管理命令 varnishd 在启动辅助进程之前启动。特别是,这是加载配置、为其应用标签并在启动时激活使用这些标签的VCL实例的方法::

vcl.load panic /etc/varnish_panic.vcl
vcl.load siteA0 /etc/varnish_siteA.vcl
vcl.load siteB0 /etc/varnish_siteB.vcl
vcl.load siteC0 /etc/varnish_siteC.vcl
vcl.label siteA siteA0
vcl.label siteB siteB0
vcl.label siteC siteC0
vcl.load main /etc/varnish_main.vcl
vcl.use main

文件中的每一行,包括最后一行,都必须以换行符或回车符结束,否则将被截断,这是一个致命错误。

如果文件中的命令以‘-’为前缀,则失败不会中止启动。

请注意,有必要包括显式 vcl.use 命令选择依赖CLI命令文件在启动时加载配置时哪个VCL应为活动VCL。

运行时参数

运行时参数标志

运行时参数使用速记标志进行标记,以避免在下表中重复相同的文本。这些旗帜的含义是:

  • experimental

    我们没有关于此参数的好/坏/最优值的可靠信息。欢迎提供经验和观察方面的反馈。

  • delayed

    此参数可以动态更改,但不会立即生效。

  • restart

    在此参数生效之前,必须停止并重新启动工作进程。

  • reload

    必须重新加载VCL程序才能使此参数生效。

  • wizard

    不要碰,除非你 really 知道你在做什么。

  • only_root

    只有在以下情况下才有效 varnishd 正在以超级用户身份运行。

32位系统上的默认值异常

请注意,在32位系统上,某些默认值或最大值相对于下面列出的值会减小,以节省VM空间:

  • 工作区_客户端:24K

  • 工作区_后端:20K

  • HTTP_RESP_SIZE:8K

  • Http_请求_大小:12k

  • GZIP_Buffer:4K

  • VSL_缓冲区:4K

  • VSL_SPACE:1G(最大)

  • 线程池堆栈:64K

参数列表

如果您使用参数.show命令,则此文本与您在CLI中找到的文本相同:

accept_filter

注:此参数取决于并非在所有平台上都可用的功能。

  • 单位:布尔值

  • 默认:打开(如果您的平台支持接受筛选器)

启用内核接受过滤器。这可能需要加载内核模块才能在启用时生效。

启用ACCEPT_FILTER可能会从一开始就阻止某些请求到达Varnish。格式错误的请求可能不会被注意到,并且不会增加CLIENT_REQ_400计数器。带有正文的GET或HEAD请求可能会被完全阻止。

acceptor_sleep_decay
  • 默认:0.9

  • 最小:0

  • 最高:1

  • 旗帜:实验性

如果我们耗尽了资源,如文件描述符或工作线程,接受者将在接受之间休眠。此参数(乘法)减少每次成功接受的休眠持续时间。(即:0.9=减少10%)

acceptor_sleep_incr
  • 单位:秒

  • 默认:0.000

  • 最低:0.000

  • 最高:1.000

  • 旗帜:实验性

如果我们耗尽了资源,如文件描述符或工作线程,接受者将在接受之间休眠。该参数控制每次我们无法接受新连接时休眠的时间。

acceptor_sleep_max
  • 单位:秒

  • 默认:0.050

  • 最低:0.000

  • 最高:10.000

  • 旗帜:实验性

如果我们耗尽了资源,如文件描述符或工作线程,接受者将在接受之间休眠。此参数限制两次尝试接受新连接之间可以休眠的时间。

auto_restart
  • 单位:布尔值

  • 默认:启用

如果子进程/工作进程死亡,则自动重新启动它。

backend_idle_timeout
  • 单位:秒

  • 默认:60.000

  • 最低:1.000

在关闭未使用的后端连接之前超时。

backend_local_error_holddown
  • 单位:秒

  • 默认:10.000

  • 最低:0.000

  • 旗帜:实验性

当连接到后端时,某些错误代码(EADDRNOTAVAIL、eAccess、EPERM)发出本地资源短缺或配置问题的信号,由于内核中涉及的操作的复杂性,重试连接尝试可能会使情况恶化。此参数可防止在配置的持续时间内重复尝试连接。

backend_remote_error_holddown
  • 单位:秒

  • Default: 0.250

  • 最低:0.000

  • 旗帜:实验性

连接到后端时,某些错误代码(ECONNREFUSED、ENETUNREACH)表示基本连接问题,例如后端不接受连接或路由问题,对于这些问题,重复连接尝试被认为是无用的。此参数可防止在配置的持续时间内重复连接尝试。

ban_cutoff
  • 单位:禁令

  • 默认:0

  • 最小:0

  • 旗帜:实验性

从缓存中清除长尾内容以将禁止数保持在此值以下。0表示禁用。

当此参数设置为非零值时,禁令潜伏程序继续像往常一样从上到下处理禁令列表,但当它达到BAN_CUTOFF-TH禁令时,它会将所有对象视为与禁令匹配并从缓存中删除它们。由于活跃使用的对象在请求时针对禁令列表进行测试,因此很可能与禁令列表顶部附近的禁令相关联,因此使用BAN_CUTOFF,最近最少访问的对象(长尾)被移除。

此参数是一个安全网,可避免由于在查找时测试禁令而导致的不良响应时间。设置截止时间以牺牲响应时间来换取缓存效率。推荐值与禁止潜伏程序工作时的速率(Bans_Lurker_Test_Tested)/n_Objects成正比,这是系统可以承受的禁止次数。请求BAN测试导致的额外延迟按BAN_CUTOFF/RATE(BANS_LURKER_TESTS_TESTED)的顺序排列。例如,对于RATE(BANS_LURKER_TESTS_TESTED)=2M/S和100ms的可容忍延迟,BAN_CUTOOFF的较佳值可能是200K。

ban_dups
  • 单位:布尔值

  • 默认:启用

当添加新的禁令时,取消旧的相同禁令。这不会将对象与相同的禁止进行比较,从而节省了CPU周期。如果你有许多不完全相同的禁令,这是浪费时间。

ban_lurker_age
  • 单位:秒

  • 默认:60.000

  • 最低:0.000

禁令潜伏者将无视禁令,直到禁令如此陈旧。添加禁令后,作为对象查找的一部分,将对照该禁令测试活动流量。由于许多应用程序会突然发布禁令,因此此参数会阻止禁令潜伏者,直到高峰结束。这应该设置为一次禁止突发所需的大致时间。

ban_lurker_batch
  • 默认:1000

  • 最低:1

禁令潜伏者在检查了这么多对象后睡了${BAN_LURKER_SLEEP}。如果潜伏的禁令消耗了太多的资源,就用这个来控制它的速度。

ban_lurker_holdoff
  • 单位:秒

  • 默认:0.010

  • 最低:0.000

  • 旗帜:实验性

由于锁定争用而让位于查找时,禁令潜伏者休眠多长时间。

ban_lurker_sleep
  • 单位:秒

  • 默认:0.010

  • 最低:0.000

在检查${BAN_LURKER_BATCH}对象后,禁令潜伏者休眠的时间。如果潜伏的禁令消耗了太多的资源,就用这个来控制它的速度。零值将完全禁用禁令潜伏者。

between_bytes_timeout
  • 单位:秒

  • 默认:60.000

  • 最低:0.000

在放弃提取之前,我们只等待从后端接收到的字节之间的这几秒钟。每个后端请求或每个后端请求的VCL值优先。此参数不适用于通过管道传输的请求。

cc_command

注意:此参数的实际缺省值取决于Varnish构建环境和选项。

  • 默认:EXEC$CC$CFLAGS%w-Shared-o%o%S

  • 标志:必须重新加载(_R)

用于将C源代码编译为dlopen(3)可加载对象的命令。可以使用以下扩展:

  • %S:源文件名

  • %o:输出文件名

  • %w:cc_warning参数

  • %d:原始默认cc_命令

  • %D:扩展的默认cc_命令

  • %n:工作目录(-n选项)

  • %%:百分号

将忽略未知的百分比扩展序列,为避免将来不兼容,应使用双百分比序列对百分比字符进行转义。

%d和%D扩展允许将参数的默认值传递给包装脚本以执行其他处理。

cc_warnings

注意:此参数的实际缺省值取决于Varnish构建环境和选项。

  • 默认:-WALL-WERROR

  • 标志:必须重新加载(_R)

使用cc_命令参数编译C源代码时使用的警告。默认情况下,VCL编译时带有与Varnish本身相同的警告集。

cli_limit
  • 单位:字节

  • 默认:64K

  • 最低:128B

  • 最高:99999999b

CLI响应的最大大小。如果响应超过此限制,响应代码将是201而不是200,最后一行将指示截断。

cli_timeout
  • 单位:秒

  • 默认:60.000

  • 最低:0.000

孩子回复CLI请求的超时时间。

clock_skew
  • 单位:秒

  • 默认:10

  • 最小:0

在后端和我们自己的时钟之间,我们愿意接受多少时钟偏差。

clock_step
  • 单位:秒

  • 默认:1.000

  • 最低:0.000

在我们恐慌之前,我们愿意接受多少观察到的时钟步长。

connect_timeout
  • 单位:秒

  • 默认:3.500

  • 最低:0.000

后端连接的默认连接超时。在放弃之前,我们只会尝试连接到后端这么多秒。VCL可以为每个后端和后端请求覆盖此默认值。

critbit_cooloff
  • 单位:秒

  • 默认:180.000

  • 最低:60.000

  • 最高:254.000

  • 标志:向导

怪物粉碎者将删除的目标保持在冷却列表中的时间。

调试
  • 默认:无

启用/禁用各种调试。

none

禁用所有调试

使用+/-前缀设置/重置各个位:

req_state

VSL请求状态引擎

workspace

VSL工作空间操作

waitinglist

VSL等待列表事件

syncvsl

使VSL同步

hashedge

哈希表中的边缘情况

vclrel

VCL快速释放

lurker

VSL禁令潜伏者

esi_chop

将ESI提取砍到位

flush_head

在Http1头后刷新

vtc_mode

方差性测试模式

witness

发出见证锁定记录

vsm_keep

重新启动时保留VSM文件

slow_acceptor

降低接受者的速度

h2_nocheck

禁用各种H2检查

vmod_so_keep

保留复制的VMOD库

processors

获取/交付处理器

protocol

协议调试

vcl_keep

保留VCL C和SO文件

lck

其他锁定统计信息

default_grace
  • 单位:秒

  • 默认:10s

  • 最低:0.000

  • 标志:OBJ_Sticky

默认宽限期。如果另一个线程正在尝试获取新的副本,我们将在对象过期后这么长时间交付该对象。

default_keep
  • 单位:秒

  • 缺省值:0

  • 最低:0.000

  • 标志:OBJ_Sticky

默认保留期间。我们将保留一个无用的对象这么长时间,使其可用于有条件的后端获取。这意味着该对象将在TTL+GREASS+KEEP结束时从缓存中移除。

default_ttl
  • 单位:秒

  • 默认:2M

  • 最低:0.000

  • 标志:OBJ_Sticky

分配给对象的TTL(如果后端和VCL代码都没有分配)。

试验性
  • 默认:无

启用/禁用实验功能。

none

禁用所有实验功能

使用+/-前缀设置/重置各个位:

drop_pools

删除线程池

特征
  • 默认:无、+VALIDATE_HEADERS、+VCL_REQ_RESET

启用/禁用各种次要功能。

default

设置默认值(已弃用:使用参数。重置)

none

禁用所有功能。

使用+/-前缀启用/禁用单个功能:

http2

启用HTTP/2协议支持。

short_panic

一条简短的恐慌信息。

no_coredump

没有核心残渣。必须在子进程开始之前设置。

https_scheme

如果方案为HTTPS,则从HTTP/1请求行中的完整URI中提取主机。

http_date_postel

容忍不符合要求的时间戳头,如 DateLast-ModifiedExpires 等。

esi_ignore_https

转换 <esi:include src"https://...http://...

esi_disable_xml_check

允许对非XML ESI正文进行ESI处理

esi_ignore_other_elements

忽略ESI正文中的XML语法错误。

esi_remove_bom

忽略ESI主体中的UTF-8 BOM表。

esi_include_onerror

解析<esi:Include>标记的onerror属性。

wait_silo

在处理请求之前,请等待永久思洛存储器完全加载。

validate_headers

验证所有标题集操作是否符合RFC7230。

busy_stats_rate

使忙碌的工作人员遵守线程_统计_速率。

trace

默认情况下启用VCL跟踪(启用(Be)req.trace)。跟踪VCL_INIT/VCL_FINI需要

vcl_req_reset

客户端离开后停止处理客户端VCL。发生这种情况时,MAIN.req_Reset将递增。

fetch_chunksize
  • 单位:字节

  • 默认:16K

  • 最低:4K

  • 旗帜:实验性

Fetcher使用的默认区块大小。这应该大于大多数具有短TTL的对象。STORAGE_FILE模块中的内部限制使增加到128KB以上是一个可疑的想法。

fetch_maxchunksize
  • 单位:字节

  • 默认:0.25G

  • 最低:64K

  • 旗帜:实验性

我们尝试从存储分配的最大区块大小。将其设置得太大可能会导致延迟和存储碎片。

first_byte_timeout
  • 单位:秒

  • 默认:60.000

  • 最低:0.000

从后端接收第一个字节的默认超时时间。在放弃之前,我们只为第一个字节等待这么多秒。VCL可以为每个后端和后端请求覆盖此默认值。此参数不适用于通过管道传输的请求。

gzip_buffer
  • 单位:字节

  • 默认:32k

  • 最低:2K

  • 旗帜:实验性

用于GZIP处理的Malloc缓冲区的大小。这些缓冲区用于传输中的数据,例如发送到客户端的压缩数据。将此空间变小会导致更多的开销、对套接字的写入等,而将其变得太大可能只是浪费内存。

gzip_level
  • 默认:6

  • 最小:0

  • 最高:9

GZIP压缩级别:0=调试,1=快速,9=最佳

gzip_memlevel
  • 默认:8

  • 最低:1

  • 最高:9

GZIP内存级别1=慢/最少,9=最快/最大压缩。内存影响为1=1k,2=2k,...9=256k。

h2_header_table_size
  • 单位:字节

  • 默认:4K

  • 最低:0B

HTTP2标头表大小。这是将用于HPACK动态解码表的大小。

h2_initial_window_size
  • 单位:字节

  • 默认:65535b

  • 最低:65535b

  • 最大:2147483647b

HTTP2初始流量控制窗口大小。

h2_max_concurrent_streams
  • 单位:溪流

  • 默认:100

  • 最小:0

HTTP2最大并发流数量。这是单个HTTP2连接可以同时处于活动状态的请求数。

h2_max_frame_size
  • 单位:字节

  • 默认:16K

  • 最低:16K

  • 最高:16777215b

我们愿意接受HTTP2每帧的最大有效载荷大小。

h2_max_header_list_size
  • 单位:字节

  • 默认:2147483647b

  • 最低:0B

HTTP2未压缩标头列表的最大大小。

h2_rapid_reset
  • 单位:秒

  • 默认:1.000

  • 最低:0.000

  • 旗帜:延迟、试验性

Http/2 RST_STREAM帧必须在标头帧之后多久才能被解析的上限阈值,以将其视为可疑帧并受到由H2_Rapid_Reset_Limit和H2_Rapid_Reset_Period指定的速率限制。对此参数的更改会影响新HTTP2会话的默认设置。可以使用vmod_h2(3)从VCL调整它。

h2_rapid_reset_limit
  • 默认:100

  • 最小:0

  • 旗帜:延迟、试验性

HTTP2 RST津贴。指定客户端在连接关闭前的一段时间内允许的最大流重置次数。将此参数设置为0将禁用限制。对此参数的更改会影响新HTTP2会话的默认设置。可以使用vmod_h2(3)从VCL调整它。

h2_rapid_reset_period
  • 单位:秒

  • 默认:60.000

  • 最低:1.000

  • 标志:延迟、实验、向导

H2_RAPID_RESET_LIMIT的HTTP2滑动窗口持续时间。对此参数的更改会影响新HTTP2会话的默认设置。可以使用vmod_h2(3)从VCL调整它。

h2_rx_window_increment
  • 单位:字节

  • 默认:1M

  • 最低:1M

  • 最大:1G

  • 标志:向导

HTTP2接收窗口递增。我们在WINDOW_UPDATE帧中发送的配额有多大只会影响传入的请求正文(例如:POST、PUT等)

h2_rx_window_low_water
  • 单位:字节

  • 默认:10M

  • 最低:65535b

  • 最大:1G

  • 标志:向导

HTTP2接收窗口低水位线。我们尽量使窗口至少保持这么大,只影响传入的请求正文(例如:POST、PUT等)。

h2_rxbuf_storage
  • 默认:瞬变

  • 标志:必须重新启动(_R)

应从中分配HTTP/2接收缓冲区的存储后端的名称。

http1_iovs
  • 单位:struct iovec(=16字节)

  • 默认:64

  • 最低:5

  • 最高:1024

  • 标志:向导

为HTTP1协议传输分配的io向量数。HTTP1报头需要每个HTTP报头字段7+2。从工作区_线程分配。此参数仅影响用于客户端传送的IO向量。对于后端提取,从可用的WORKSPACE_THREAD内存中分配最大io向量数量(最多IOV_Max)。

http_gzip_support
  • 单位:布尔值

  • 默认:启用

启用gzip支持。启用后,Varnish从后端请求压缩对象并将其压缩存储。如果客户端不支持GZIP编码,Varnish将按需解压缩压缩对象。Varnish还将重写指示支持gzip的客户端的Accept-Ending标头,以:

接受-编码:GZIP

不支持GZIP的客户端将删除其Accept-Ending标头。有关如何实现gZip的更多信息,请参阅Varnish参考中关于gZip的章节。

当禁用gZIP支持时,变量beresp.do_gzip和beresp.do_ganzip在VCL中不起作用。

http_max_hdr
  • 单位:标题行

  • 默认:64

  • 最低:32

  • 最高:65535

Maximum number of HTTP header lines we allow in {req|resp|bereq|beresp}.http (obj.http is autosized to the exact number of headers). Cheap, ~20 bytes, in terms of workspace memory. Note that the first line occupies five header lines.

http_range_support
  • 单位:布尔值

  • 默认:启用

启用对HTTP范围标头的支持。

http_req_hdr_len
  • 单位:字节

  • 默认:8K

  • 最低:40B

我们将允许的任何HTTP客户端请求标头的最大长度。该限制包括其续行线。

http_req_size
  • 单位:字节

  • 默认:32k

  • 最小:0.25k

我们将处理的HTTP客户端请求的最大字节数。这是对所有字节的限制,直到结束HTTP请求的双空行为止。请求的内存是从客户端工作区(参数:WORKSPACE_CLIENT)分配的,该参数限制了允许请求占用的内存量。

http_resp_hdr_len
  • 单位:字节

  • 默认:8K

  • 最低:40B

我们将允许的任何HTTP后端响应头的最大长度。该限制包括其续行线。

http_resp_size
  • 单位:字节

  • 默认:32k

  • 最小:0.25k

我们将处理的HTTP后端响应的最大字节数。这是对所有字节的限制,直到结束HTTP响应的双空行为止。响应的内存是从后端工作区分配的(参数:WORKSPACE_BACKEND),该参数限制了允许响应占用多少内存。

idle_send_timeout
  • 单位:秒

  • 默认:60.000

  • 最低:0.000

  • 标志:延迟

为客户端连接上的各个数据段发送超时。如果应用‘SEND_TIMEOUT’,可能会被延长。

当达到此超时时,会话将关闭。

请参阅的手册页 setsockopt(2)socket(7) 在……下面 SO_SNDTIMEO 以获取更多信息。

listen_depth
  • 单位:连接

  • 默认:1024

  • 最小:0

  • 标志:必须重新启动(_R)

监听队列深度。

lru_interval
  • 单位:秒

  • 默认:2.000

  • 最低:0.000

  • 旗帜:实验性

对象在LRU列表上移动之前的宽限期。仅当对象在此超时期限内尚未移动到LRU列表的前面时,它们才会移动到LRU列表的前面。这减少了LRU列表访问所需的锁定操作量。

max_esi_depth
  • 单位:标高

  • 默认:5

  • 最小:0

ESI的最大深度:包括加工。

max_restarts
  • 单位:重新启动

  • 默认:4

  • 最小:0

请求可以重新启动的次数上限。

max_retries
  • 单位:重试

  • 默认:4

  • 最小:0

后端提取可以重试的次数上限。

max_vcl
  • 默认:100

  • 最小:0

加载的VCL程序的阈值。(不计算VCL标签。)参数max_vclHandling确定行为。

max_vcl_handling
  • 默认:1

  • 最小:0

  • 最高:2

尝试超过max_vcl加载的VCL时的行为。

  • 0-忽略max_vcl参数。

  • 1-发出警告。

  • 2-垃圾装车VCLS。

nuke_limit
  • 单位:分配

  • 默认:50

  • 最小:0

  • 旗帜:实验性

为了给对象实体腾出空间而尝试核化的对象的最大数量。

pcre2_depth_limit
  • 默认:20

  • 最低:1

Pcre2_Match()中内部匹配逻辑的递归深度限制。

(参见:pcre2文档中的pcre2_set_thepth_Limit()。)

这对PCRE2用于某些类正则表达式的堆栈数量设置了上限。

为了防止崩溃,我们将缺省值设置得很低,但代价是可能会出现regexp匹配失败。

匹配失败将在日志中显示为VCL_ERROR消息。

pcre2_jit_compilation
  • 单位:布尔值

  • 默认:启用

如果可用,请使用pcre2 JIT编译器。

pcre2_match_limit
  • 默认:10000

  • 最低:1

对pcre2_Match()中的内部匹配逻辑的调用次数限制。

(参见:pcre2文档中的pcre2_set_Match_Limit()。)

此参数限制正则表达式匹配可以占用的CPU时间。

ping_interval
  • 单位:秒

  • 默认:3

  • 最小:0

  • 标志:必须重新启动(_R)

从父设备向子设备执行ping操作之间的间隔。零将完全禁用ping,这使将调试器附加到子对象成为可能。

pipe_sess_max
  • 单位:连接

  • 默认:0

  • 最小:0

专用于管道事务的最大会话数。

pipe_timeout
  • 单位:秒

  • 默认:60.000

  • 最低:0.000

管道会话的空闲超时。如果在此秒数内未在两个方向上接收到任何信息,则会话将关闭。

pool_req
  • 默认:10,100,10

每个工作线程池请求内存池的参数。

这三个数字是:

min_pool

可用池的最小大小。

max_pool

可用池的最大大小。

max_age

可用元素的最长使用期限。

pool_sess
  • 默认:10,100,10

每工作进程池会话内存池的参数。

这三个数字是:

min_pool

可用池的最小大小。

max_pool

可用池的最大大小。

max_age

可用元素的最长使用期限。

pool_vbo
  • 默认:10,100,10

后端对象获取内存池的参数。

这三个数字是:

min_pool

可用池的最小大小。

max_pool

可用池的最大大小。

max_age

可用元素的最长使用期限。

prefer_ipv6
  • 单位:布尔值

  • 默认:关闭

当连接到同时具有IPv4和IPv6地址的后端时,首选IPv6地址。

rush_exponent
  • 单位:每个请求的请求数

  • 默认:3

  • 最低:2

  • 旗帜:实验性

我们为对象上的每个已完成请求启动的暂留请求数。注意:即使存在隐含的传递延迟,此参数也可以控制工作线程数量的指数增长。

send_timeout
  • 单位:秒

  • 默认:600.000

  • 最低:0.000

  • 标志:延迟

普通HTTP1响应的总超时时间。不适用于某些内部生成的错误和管道模式。

如果在发送HTTP1响应时命中‘IDLE_SEND_TIMEOUT’,则超时将延长,除非整个发送响应所用的总时间超过此秒数。

当达到此超时时,会话将关闭

短暂的生命
  • 单位:秒

  • 默认:10.000

  • 最低:0.000

如果创建的对象的长度小于此长度,则始终将其放入临时存储中。

sigsegv_handler
  • 单位:布尔值

  • 默认:启用

  • 标志:必须重新启动(_R)

安装一个信号处理程序,尝试转储有关分段故障、总线错误和中止信号的调试信息。

startup_timeout
  • 单位:秒

  • 默认:0.000

  • 最低:0.000

初始工作进程启动的替代超时。如果cli_timeout比STARTUP_TIMEOUT长,则使用它。

syslog_cli_traffic
  • 单位:布尔值

  • 默认:启用

将所有CLI流量记录到系统日志(Log_Info)。

tcp_fastopen

注:此参数取决于并非在所有平台上都可用的功能。

  • 单位:布尔值

  • 默认:关闭

  • 标志:必须重新启动(_R)

启用TCP快速打开扩展。

tcp_keepalive_intvl

注:此参数取决于并非在所有平台上都可用的功能。

  • 单位:秒

  • 默认:取决于平台

  • 最低:1.000

  • 最高:100.000

  • 旗帜:实验性

TCP Keep-Alive探测之间的秒数。对Unix域套接字忽略。

tcp_keepalive_probes

注:此参数取决于并非在所有平台上都可用的功能。

  • 单位:探头

  • 默认:取决于平台

  • 最低:1

  • 最高:100

  • 旗帜:实验性

如果未从另一端获得响应,则在放弃和终止连接之前要发送的最大TCP保活探测数。对Unix域套接字忽略。

tcp_keepalive_time

注:此参数取决于并非在所有平台上都可用的功能。

  • 单位:秒

  • 默认:取决于平台

  • 最低:1.000

  • 最高:7200.000

  • 旗帜:实验性

在TCP开始发出保活探测之前,连接需要空闲的秒数。对Unix域套接字忽略。

thread_pool_add_delay
  • 单位:秒

  • 默认:0.000

  • 最低:0.000

  • 旗帜:实验性

在创建线程之后,至少要等待这么长时间。

一些(有错误的)系统可能需要在创建线程之间有一个短的(亚秒级)延迟。如果您看到‘THREADS_FAILED’计数器增长太多,请将其设置为几毫秒。

将该值设置得太高会导致工作线程不足。

thread_pool_destroy_delay
  • 单位:秒

  • 默认:1.000

  • 最低:0.010

  • 旗帜:延迟、试验性

在销毁一根线之后等了这么长时间。

这控制了线程池在空闲(-ish)时的衰减。

thread_pool_fail_delay
  • 单位:秒

  • 默认:0.200

  • 最低:0.010

  • 旗帜:实验性

在尝试创建另一个线程之前,至少要在线程创建失败后等待这么长时间。

创建工作线程失败通常是接近尾声的标志,因为进程正在耗尽某些资源。这一拖延试图避免不必要的仓促结束。

如果线程创建失败是一个问题,请检查线程池最大值是否不太高。

它还可能有助于增加THREAD_POOL_TIMEOUT和THREAD_POOL_MIN,以降低销毁踏步和稍后重新创建踏步的速率。

thread_pool_max
  • 单位:螺纹

  • 默认:5000

  • 最小值:线程池最小

  • 标志:延迟

每个池中的最大工作线程数。

不要将其设置得高于必须设置的值,因为过多的工作线程会占用RAM和CPU,并且通常只会妨碍完成工作。

thread_pool_min
  • 单位:螺纹

  • 默认:100

  • 最低:5

  • 最大值:线程池最大值

  • 标志:延迟

每个池中的最小工作线程数。

增加此值可能有助于从低负载情况或线程过期时更快地提升。

技术上最小为5个线程,但强烈建议此参数至少为10个

thread_pool_reserve
  • 单位:螺纹

  • 默认值:0(自动调整:线程池最小值的5%)

  • 最大值:线程池最小值的95%

  • 标志:延迟

为每个池中的重要任务保留的工作线程数。

任务可能需要其他任务才能完成(例如,客户端请求可能需要后端请求,HTTP2会话需要流,这需要请求)。此保留是为了确保较低优先级的任务即使在高负载下也不会阻止较高优先级的任务运行。

有效值至少为5(内部优先级类数),与此参数无关。

thread_pool_stack
  • 单位:字节

  • 默认:80k

  • 最小值:sysconf(_SC_THREAD_STACK_MIN)

  • 标志:延迟

工作线程堆栈大小。内核很可能会将其四舍五入为4k的倍数(或其他任何大小)。

所需的堆栈大小主要由调用树的深度驱动。VARNISH核心代码中最常见的相关决定因素是GZIP(非)压缩、ESI处理和正则表达式匹配。VMOD还可能需要大量的额外堆栈。VCL潜艇的嵌套深度是另一个因素,尽管通常不是主要因素。

堆栈大小是按线程计算的,因此工作线程堆栈所需的最大总内存按以下顺序排列:大小=线程池x线程池_最大x线程池_堆栈。

因此,特别是对于具有许多线程的设置,将堆栈大小保持在最小有助于减少Varnish所需的内存量。

另一方面,THREAD_POOL_STACK在任何情况下都必须足够大,否则Varnish将因堆栈溢出而崩溃。通常,堆栈溢出本身表现为分段错误(也称为SEGFAULT/SIGSEGV),错误地址位于堆栈指针(SP)附近。

除非可以减少堆栈使用率,否则在发生堆栈溢出时必须增加THREAD_POOL_STACK。建议将其设置为150%-200%的增量,直到停止发生堆栈溢出。

thread_pool_timeout
  • 单位:秒

  • 默认:300.000

  • 最低:10.000

  • 旗帜:延迟、试验性

线程空闲阈值。

超过THREAD_POOL_MIN的线程将被销毁,这些线程至少已经空闲了这么长时间。

thread_pool_watchdog
  • 单位:秒

  • 默认:60.000

  • 最低:0.100

  • 旗帜:实验性

线程队列卡住了看门狗。

如果在如此长的时间内没有释放排队的工作,工作进程本身就会死机。

thread_pools
  • 单位:泳池

  • 默认:2

  • 最低:1

  • 最高:32

  • 旗帜:延迟、试验性

工作线程池数。

增加工作池的数量可以减少锁定争用。每个工作池还具有一个接受新连接的线程,因此对于具有多个核心的系统上非常高的传入新连接率,可能需要增加工作池。

过多的池会浪费CPU和RAM资源,并且每个CPU使用多个池很可能会损害性能。

可以动态增加,但减少需要重新启动才能生效,除非设置了DROP_POOL实验调试标志。

thread_queue_limit
  • 单位:请求

  • 默认:20

  • 最小:0

  • 旗帜:实验性

每个线程池允许的请求队列长度。

这设置了我们将排队等待可用线程的请求数量。超过此限制,会话将被丢弃,而不是排队。

thread_stats_rate
  • 单位:请求

  • 默认:10

  • 最小:0

  • 旗帜:实验性

工作线程累积统计信息,如果在它们完成作业(请求/获取等)时锁是空闲的,则将这些统计信息转储到全局统计信息计数器中。此参数定义工作线程在被强制将其累积的统计信息转储到全局计数器之前可以处理的最大作业数。

timeout_idle
  • 单位:秒

  • 默认:5.000

  • 最低:0.000

客户端连接的空闲超时。

在我们收到完整的请求头之前,连接被认为是空闲的。

此参数与HTTP1保持连接特别相关,除非在达到此超时之前收到下一个请求,否则HTTP1保持连接将关闭。

timeout_linger
  • 单位:秒

  • 默认:0.050

  • 最低:0.000

  • 旗帜:实验性

工作线程在将空闲会话移交给等待进程之前在该会话上停留的时间。当会话被重用时,多达一半的重用发生在前一个请求完成的前100毫秒内。设置得太高会导致工作线程不执行任何保留操作,而设置得太低则意味着更多的会话会绕开服务员。

transit_buffer
  • 单位:字节

  • 默认:0B

  • 最低:0B

Varnish为不可缓存的后端数据流提取缓冲的字节数-换句话说,Varnish在发送到客户端之前从后端读取了多少字节。零值表示没有限制,将以尽可能快的速度获取对象。

在处理速度较慢的客户端时,将此参数设置为非零值可以防止无法缓存的大型对象被完全存储,而其目的只是将它们流传输到客户端。其结果是,慢速客户端事务将保持后端连接,直到传递结束。

此参数是VCL变量的缺省参数 beresp.transit_buffer ,它可用于控制每个后端请求的传输缓冲区。

vary_notice
  • 单位:变体

  • 默认:10

  • 最低:1

需要评估多少个变体才能记录可能有太多变体的通知。

vcc_allow_inline_c

VCC_FEATURE参数的别名已弃用。

vcc_err_unref

VCC_FEATURE参数的别名已弃用。

vcc_feature
  • 默认:无、+ERR_UNREF、+UNSAFE_PATH

启用/禁用各种VCC行为。

default

设置默认值(已弃用:使用参数。重置)

none

禁用所有行为。

使用+/-前缀启用/禁用个别行为:

err_unref

未引用的VCL对象会导致错误。

allow_inline_c

允许在VCL中内联C代码。

unsafe_path

允许在vmod包含路径中使用‘/’(&I)。允许‘导入...从...’。

vcc_unsafe_path

VCC_FEATURE参数的别名已弃用。

vcl_cooldown
  • 单位:秒

  • 默认:600.000

  • 最低:1.000

VCL被替换为活动VCL后保持温暖的时间(粒度约为30秒)。

vcl_path

注意:此参数的实际缺省值取决于Varnish构建环境和选项。

  • 默认:${syscondir}/Varnish:${datadir}/Varnish/vcl.

要从中找到相对VCL文件名(vcl.load和Include)的目录(或冒号分隔的目录列表)。默认情况下,Varnish在系统配置目录和共享数据目录中搜索VCL文件,以允许包将它们的VCL文件放在相对包含可以工作的标准位置。

vmod_path

注意:此参数的实际缺省值取决于Varnish构建环境和选项。

  • 默认:${libdir}/Varnish/vmods

要找到VMOD的目录(或冒号分隔的目录列表)。

vsl_buffer
  • 单位:字节

  • 默认:16K

  • 最小:VSL_RECLEN+12字节

专用于缓冲VSL记录的(Req-/Backend-)工作区字节。调整此参数时,很可能需要对WORKSPACE_CLIENT和WORKSPACE_BACKEND进行相同幅度的调整。

设置得太高会占用内存,设置得太低会导致更多的VSL刷新,并可能增加VSL互斥锁上的锁争用。

vsl_mask
  • 默认:全部、-调试、-Obj协议、-ObjStatus、-ObjReason、-ObjHeader、-ExpKill、-WorkThread、-Hash、-VfpAcct、-H2 RxHdr、-H2 RxBody、-H2 TxHdr、-H2 TxBody、-VdpAcct

屏蔽单独的VSL消息,使其不被记录。

all

启用所有标签

default

设置默认值(已弃用:使用参数。重置)

在VSL标签名称前面使用+/-前缀来取消屏蔽/屏蔽单个VSL消息。

vsl_reclen
  • 单位:字节

  • 默认:255b

  • 最低:16b

  • 最大值:VSL_BUFFER-12字节

SHM日志记录中的最大字节数。

vsl_space
  • 单位:字节

  • 默认:80M

  • 最低:1M

  • 最大:4G

  • 标志:必须重新启动(_R)

在VSM内存段中为VSL FIFO缓冲区分配的空间量。如果设置得太小,Varnish{ncsa|log}等将无法跟上。将其设置得太大只会消耗内存资源。

vsm_free_cooldown
  • 单位:秒

  • 默认:60.000

  • 最低:10.000

  • 最高:600.000

取消分配后VSM内存保持温暖的时间(粒度约为2秒)。

workspace_backend
  • 单位:字节

  • 默认:96k

  • 最低:1K

  • 标志:延迟

后端HTTP请求/响应的HTTP协议工作空间的字节数。如果大于4k,请使用4k的倍数来提高VM效率。

workspace_client
  • 单位:字节

  • 默认:96k

  • 最低:9K

  • 标志:延迟

客户端HTTP请求/响应的HTTP协议工作区的字节数。使用4k的倍数来提高VM效率。为了符合HTTP/2,这必须至少为20k,才能从客户端接收完整大小(=16k)的帧。这通常只发生在POST/PUT主体中。对于其他流量模式,较小的值也可以。

workspace_session
  • 单位:字节

  • 默认:0.75k

  • 最低:384b

  • 标志:延迟

会话结构和工作区的分配大小。工作区主要用于TCP连接地址。如果大于4k,请使用4k的倍数来提高VM效率。

workspace_thread
  • 单位:字节

  • 默认:2K

  • 最小:0.25k

  • 最大:8K

  • 标志:延迟

每个线程的辅助工作空间字节数。此工作区用于工作线程操作期间的某些临时数据结构。一种用途是用于交付过程中使用的IO向量。将此参数设置得太低可能会增加Writev()系统调用的数量,而将其设置得太高只会浪费空间。在任何已知情况下(不包括外来vmod使用),~0.1k+UIO_MAXIOV*sizeof(Struct Iovec)(对于64位,通常=~16k)被认为是最大的感应值。

退出代码

在大多数情况下,Varnish和捆绑工具将以以下代码之一退出

  • 0 OK

  • 1 一些可能是系统相关和/或瞬时错误

  • 2 严重的配置/参数错误-使用相同的配置/参数重试很可能毫无用处

这个 varnishd 主进程也可以或其退出代码

  • 使用 0x20varnishd 子进程已死亡,

  • 使用 0x40varnishd 子进程已被信号终止,并且

  • 使用 0x80 当一个核心被倾倒时。

另请参阅

HISTORY

这个 varnishd 守护程序是由Pul-Henning Kamp与Verden Gang AS和Varnish Software合作开发的。

本手册页面由Dag-Erling Smørgrav撰写,Stig Sandbeck Mathisen<ssm@debian.org>、Nils Goroll和其他人进行了更新。