varnish 包安装yum install varnish
varnish 网址:www.varnish-cache.org
命中率: warm up 缓存热身,,
缓存的有效性判断机制:过期时长:Expires 绝对时长。。 cache-control:maxage= 最大时间相对时长,,,
cache-control:s-maxage= 控制公共缓存的可缓存时长。。
varnish缓存文档。
条件试请求:last-modified/if-modified-since: 基于文件秀发i时间戳
/etc/varnish/default.vcl 缓存策略 配置文件 child/cache 线程
/etc/varnish/varnish.params 配置进程监听地址端口,用内存还是磁盘缓存。进程自己的工作特性配置文件
/etc/varnish/secret 交互式登入文件 varnishadm m -S /etc/varnish/secret -T 127.0.0.1:6081
/usr/lib/systemd/system/varnishlog.service 持久化记录日志。。
shared memory log 交互工具: /usr/bin/varnishhist /usr/bin/varnishlog /usr/bin/varnishncsa
/usr/bin/varnishstat /usr/bin/varnishtop
测试工具程序:/usr/bin/varnishtest
vanish的缓存机制:
/etc/varnish/varnish.params 进程自己的工作特性配置文件。
RELOAD_VCL=1 启动会不会重新装载vcl文件。1 会的
VARNISH_VCL_CONF=/etc/varnish/default.vcl 默认加载的缓存文件。。
VARNISH_LISTEN_PORT=6081 监听的端口。。
VARNISH_ADDMIN_LISTEN_ADDRESS=127.0.0.1 远程连接的地址。
VARNISH_ADMIN_LISTEN_PORT=6082 远程连接的端口
VARNISH_STORAGE="malloc,256M" varnish存储目录 malloc用于定义内存存储,重启缓存失效,
file [.path[size[granularity]] 磁盘文件存储黑盒重启失效,VARNISH_STORAGE=“/data/cache,1g"
daemon_opts="-p thread_pool_min=5 (线程池最小空闲数)-p thread_pool_ma=500 ( 最大进程数) -p thread_pool_timeout=300 (线程池超时时长) -p设置参数和值可重复使用。 -r:设定参数为只读状态。
/etc/varnish/secret 远程连接安全文件
varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 连接进入交互式接口。
vcl.list 列出vcl文件。。 param.show thread_pools 查线程池
vcl.load test2 default.vcl 装在test2 文件加载vcl规则。 vcl.list:查看vcl规则。。
vcl.use test2 使用test2 规则。 vcl.discard test2 删除test2 规则。。
param.show 查看运行时参数。 storage.list 列出存储。
vcl有多个状态引擎。每个状态引擎对应vcl一个配置段,
两个特殊引擎:vcl_init: 在任何请求前,要执行的vcl代码,主要用于被初始化vmods。
vcl_fini:所有的请求都已被结束,在vcl配置丢弃时调用,用于清理vmods。
状态引擎都有:
vcl_recv 收到请求 ,, vcl_pass:不能查缓存的 vcl_hash: 可以查缓存的
vcl_hit:命中的 vcl_miss:没命中的 vcl_page: 理解不了的是不是web请求的
vcl_purge: 人工清理。 vcl_synth:缓存修剪。 vcl_deliver:向客户端发送相应报文。。
操作符:
变量赋值:变量赋值 = ~模式匹配, ==等值比较, , != 不等值。。 逻辑运算:&& || !=
obj.* obj.hits:此对象从缓存中命中的次数,大于1从缓存中命中的,,0从后端得到的。。
显示从缓存命中的
变量类型:内建变量。
req.* 表示由客户端发来的请求。 req.http.* 应用客户端的首部。。。
req.http.user-Agent 直接引用指定报文首部信息
bereq.* :由varnish发来给be主机的请求 bereq.http.*
beresp.* :由be主机响应给varnish相应报文,,, beresp.http.*
resp.*:由varnish响应给客户端的响应报文。
常用变量:bereq.* req.* 请求类
bereq.http.HEADERS :头文件。 bereq.requrl:请求url berq.request:请求方法。
bereq.proto:请求协议。 bereq.backend :指明要调用的后端主机。
req.http.cookie:客户端请求报文中cookie首部值。。
bereq.* resp.* 相应报文。。
beresp.http.HEADERS :相应头部报文。。 beresq.status:相应的状态码。
beresp.proto: 协议版本 beresp.backend.name:be主机的主机名。。
beresp.ttl:be主机相应的内容的余是可缓存时长。。
obj.* obj.ttl: 对象的ttl值,缓存时常。。
限定请求方法不让查缓存,与限定客户端请求方法,返回值。。
定义后端服务器收到请求IP。。
用于保存某缓存项从缓存命中的次数。。
s-maxage:控制公共缓存的可缓存时长。 !~不匹配。
unset bereqsp.http.set-cookie; 设置cookie值取消。
set beresp.ttl=3600s; 设置缓存3600s
s-ban禁用清除匹配项密令:
ban req.url ~/foo url以foo开头的禁用,(禁用匹配的缓存项). 在交互式模式下执行。
ban req.http.host ~ example.com && obj.http.content-type ~test
ban req.url ~.js$ 禁用以.js结尾的内容。
ban req.url ~ ^/javascripts
ban配置文件定义:
varnish如何在代理时使用多个后端主机:
在配置vcl配置文件/etc/varnish/default.vcl 中定义 import directors; 导入初始化模块
定义组:
调用组:
示例:不同的配置到不同的服务器组;
健康状态检测:
varnish经常调用的参数在/etc/varnish/varnish.params 最后一行配置
thread_pool_max 每线程池最大线程数
thread_pool_min 最大空闲连接数
thread_queue_limit 线程池后援队列长度
thread_pool_timeout 空闲线程池超时时长
thread_pool_fail_deay 创建线程池失败隔多久在重建。
thread_pool_destroy_delay 杀死线程池需要延期吗
time相关参数:
timeout_idle 8 s : 保持超时时长
send_timeout 300s 发送客户段超时时长、。
timeout_req 5s 请求报文时间
cli_timeout 40s 用varnishadmin 发出命令 management相应超时时长。
在交互式模式下用:param.show cli_timeout 查看参数状态值。
#varnishstat 查看统计数据
varnishstat -1 只查看一次统计数据。 varnishstat -1 -f filed_name:制定只显示哪个字段。
varnishstat -l :可用于-f指定名称和列表
#varnishlog 查实时日志
varnishtop -1:varnish日志区域的条目排序。统计据逆序排序。
varnishtop -i Respstatus: 过滤单独标签 -i:指定标签
varnishtop -I ^resp: 过滤以resp开头
varnishtop -X BereqHeadr,BerespHeader :过滤这俩不显示排除列表。。。
#varnishncsa 以ncsa 格式记录日志。。。
systemctl start varnishncsa: 启动varnish日志记录。。
tail /var/log/varnish/varnishncsa.log 查看日志
网友评论