varnishd

HTTP加速守护进程

概要

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

描述

varnish守护进程可以接受来自客户端的HTTP请求,把他们传递到后端服务器并缓存然后返回,以更好的满足后续同一地址的请求。

参数

  • -a <address[:port][,PROTO]>

监听指定地址和端口的客户端请求。这个地址可以是服务器名称(例如:localhost),一个IPV4点号分隔的地址(例如127.0.0.1)或者是方括号括起来的IPV6地址(例如[::1])。如果地址没有指定的话,varnishd将会监听所有可用的IPV4和IPV6接口。如果未指定端口号,那么80端口将会被使用。另外监听套接字的协议类型可以通过PROTO来设置,有效的协议有HTTP/1(默认),PROXY。多个监听地址可以通过使用多个-a参数来指定。

  • -b <host[:port]>

指定后端服务器的主机。如果端口没有指定,那么默认是8080.

  • -c

打印被编译为C语言的VCL代码并退出。指定编译的VCL文件可以使用-f参数。

  • -d

启用调试模式

  • -F

不要fork进程,直接在前台运行。

  • -f config

使用指定的VCL配置文件来取代内置的默认内容。可以查看VCL相关章节来了解VCL的语法。当没有指定-f也没有指定-b参数时,varnishd将无法启动工作进程。

  • -h <type[,options]>

指定的哈希算法。可以查看散列算法参数来查看支持的算法列表。

  • -i identity

指定varnish服务器的特性,这个可以使用server.identity在VCL中进行访问。

  • -j <jail[,jailoptions]>

指定jailing技术的使用。

  • -l <vsl[,vsm]>

指定shmlog文件的大小。vsl是VSL记录的空间[80M],vsm是状态计数器的空间[1M]。像K和M这样的后缀,可以使用到G。默认是81M。

  • -M <address:port>

连接到这个端口,并提供命令行界面。可以把它看成是一个反向的shell。当运行的时候使用-M参数的话,如果没有后端服务器定义子进程将不能够正常启动。

  • -n name

指定此实例的名称。除其他事项外,这个名字一般都是用来构建varnish保存临时文件和持久状态目录名称时使用。如果在指定名称时使用正斜杠开头,那么会被解释为使用目录绝对路径。

  • -P file

将PID写入指定的文件。

  • -p <param=value>

通过设置参数来指定参数的值,这个选项可以多次使用,以指定多个参数。

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

列出只读参数列表。这个可以给系统管理员一种方法去限制varnish cli可以做什么事情。考虑让cc_command, vcc_allow_inline_c和vmod_dir这些参数只读,因为这些参数可能被用于从cli修改权限。

  • -S file

包含了用于认证管理端口权限的密钥文件的地址。如果没有提供新的密钥,那么它会从系统的PRNG获取。

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

用于指定存储的后端。这个选项可以多次使用,以指定多个存储文件。名称可以参考日志、VCL、统计等。

  • -T <address[:port]>

提供一个在指定地址和端口的管理接口。

  • -t TTL

指定缓存对象默认的生存时间。这是用于指定default_ttl运行时参数的快捷方式。

  • -V

展示版本号并退出。

  • -W waiter

指定waiter type。

hash算法参数

下列的hash算法是可用的:

  • -h critbit

varnish 2.1和以后版本的默认算法。除非你知道你要做什么,否则不要修改这个。

  • -h simple_list

一个简单的双向链表,一般不建议用于生产环境。

  • -h

一个标准的hash表。

后端存储参数

下列后端存储类型是被允许的:

  • -s

malloc是基于内存的后端存储。

  • -s

在磁盘文件上存储后端数据。这个文件将会使用mmap进行访问。path是必须的,如果路径指向一个目录的话,临时文件将会在这个目录中创建,并取消链接。如果path指向一个不存在的文件,那么文件会被创建。如果省略大小,并且path指向一个尺寸大于0已经存在的文件,那么将会使用现在文件的大小来充当此参数。如果没有,则报错。granularity设置分配块的尺寸。默认为系统页面大小或者文件系统块大小,以两者较大者为准。

  • -s

持久存储。varnish将会存储对象到一个文件中。持久存储有很多问题,所以很可能在将来的版本中移除。

Jail参数

varnish的jail是一个泛化的在各种平台特定的方法来降低varnish进程的权限。他们有特定的选项,下面都是可用的:

  • -j solaris

  • -j

默认情况下,在所有其他平台上面,varnishd被root用户启动或者是varnish用户。随着unix jail技术的激活,varnish将切换到一个子进程的用户,并修改主进程可能有效的UID。可选的用户参数是替代用户,默认是varnish。

  • -j none

不得已的选择:varnish将使用启动时的权限来运行所有进程。

管理接口

如果指定了-T参数,varnishd将会提供在指定的地址和端口上面的命令行管理接口。连接到命令行管理接口的推荐方式是通过varnishadm。

可用的命令都在varnish中有所介绍。

RUN TIME参数

RUN TIME 参数信号

Runtime参数都有缩写,以避免一遍一遍的输入重复的文本。标识的含义如下:

  • experimental

我们对这个参数的good/bad/optimal没有可靠的信息。

  • delayed

这个参数可以动态改变,但是不会立即生效。

  • restart

工作进程必须停止并重启这个参数才会生效。

  • reload

VCL程序必须重载这个参数才会生效。

  • experimental

我们真的不知道这个参数。

  • wizard

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

  • only_root

如果运行是通过root用户才工作。

在32为系统上的默认值

要知道,在32位系统上面,某些默认值相对于一下列出的值可以节省空间:

  • workspace_client: 16k
  • thread_pool_workspace: 16k
  • http_resp_size: 8k
  • http_req_size: 12k
  • gzip_stack_buffer: 4k
  • thread_pool_stack: 64k

参数列表

本文的参数你都可以在param.show命令查看到的列表是差不多的:

accept_filter

单位: BOOL

默认值: 开启

标识: must_restart

启用内核过滤器(如果内核可用的话)

acceptor_sleep_decay

默认: 0.9

最小值: 0

最大值: 1

标识: experimental

这个参数可以减少每个成功接受的睡眠时间。(0.9就是减少10%)

acceptor_sleep_incr

单位: 秒

默认: 0.000

最小: 0.000

最大: 1.000

标识: experimental

此参数可以控制睡眠时间长短,每次失败的时候都可以接受新的连接。

acceptor_sleep_max

单位: 秒

默认: 0.050

最小: 0.000

最大: 10.000

标识: experimental

此参数可以控制多久之后接受新的连接。

auto_restart

单位: BOOL

默认: 开启

如果进程挂掉的话就重启子进程或者工作进程。

backend_idle_timeout

单位: 秒

默认: 60.000

最小: 1.000

我们关闭未使用的后端连接之前的超时时间。

ban_dups

单位: BOOL

默认: 开启

。。。。。。未完待续。。。。。。

results matching ""

    No results matching ""