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
默认: 开启
。。。。。。未完待续。。。。。。