本文共 2871 字,大约阅读时间需要 9 分钟。
下面介绍的是varnish缓存
一、缓存基础
1、缓存的时效性 缓存有三种时效性机制,分别是过期清理(purge)、溢出清理(lru)、修改清理。 2、缓存的命中率 页面命中率(页面数量)、字节命中率(页面体积)。 3、数据的缓存位置 私有数据:【浏览器】完成缓存; 公有数据:【反代】上缓存。 4、缓存步骤(6步):二、varnish
1、varnish缓存组织架构:主进程/子进程。 manage进程:主进程,管理子进程,初始化缓存; cache进程:子进程,多种线程模型。varnish的配置接口为:vcl。
2、varnish程序环境
配置文件作用: /etc/varnish/varnish.params:运行参数 /etc/varnish/default.vcl:子线程属性主要命令:/usr/bin/
varnishd:varnish主程序 varnishadm:命令行接口 varnishtest:测试 varnish_reload_vcl:重载vcl配置文件 varnish.service:管理主进程3、/usr/bin/varnishd --------------主程序
-a:服务地址(端口),默认127.0.0.1:6081; -T:管理地址和接口,默认127.0.0.1:6082; -s:缓存机制,malloc/file/persistent/path/size; -f:指明vcl配置文件; -p param=value:运行时参数及其值; -r:运行时参数为可读。4、/etc/varnish/varnish.params ----------运行时参数文件
DAEMON_OPTS = '-p param1=value1 -p ...' thread_pool_min= thread_pool_max= thread_pool_timeout= //线程销毁的等待时间线程模型: cache-worker:处理请求 cache-main:启动cache功能 ban lurker:修剪 acceptor:新连接请求 epool/kqueue:线程池管理 expire:清理过期缓存 backend poll:后端服务器健康检测
5、varnishadm命令
常用选项: -S:命令行工具 -T:管理地址和管理端口varnish>
vcl.list vcl.load conf1 default.vcl //装载并编译acl文件 vcl.use conf1 //激活配置文件 vcl.list vcl.discard //删除配置文件 param.show //显示运行时参数 param.set //设置运行时参数 storage.list //缓存存储相关 backend.list //后端服务器列表6、vcl引擎(vcl不支持循环)
vcl_recv vcl_hash vcl_hit vcl_deliver vcl_pass vcl_miss vcl_backend_fetch vcl_backend_error vcl_backend_response vcl_purge //修剪 vcl_pipe vcl_synth特殊引擎:
vcl_init:处理请求前执行的vcl代码,初始化vmods; vcl_fini:结束时使用,清理vmods。vcl内建变量:req., bereq., resp., beresp., obj.*
req.url <--> bereq.url req.request <--> bereq.request req.proto <--> bereq.proto resp.status <--> beresp.status7、缓存特定类型的资源,长时间不变的资源。
varnish调度到特定的资源上时,由于资源比较稳定,可以在varnish缓存调度器上进行缓存资源,以便其他客户端进行访问。对于匹配的bereq.url,进行unset beresp.http.Set-Cookie,并设置beresp.ttl。8、purge
对于缓存修剪,在vcl_recv里面进行修剪匹配操作,使用大量的if语句进行修剪条件,其中可以使用req.method、client.ip等,可以使用return(synth(...))进行修改执行。9、backend
对于varnish后端主机,我用backend {...}来进行设置,其中需要设置IP和端口号,也要设置probe{...}检测机制,对于检测机制来说,可以是动态的,也可以是静态的,还可以是图片等特殊资源,还可以进行健康状态检查,具体看怎么设置url。10、varnish日志
11、varnish的内建函数
regsub:替换匹配到的第一个 regsuball:替换所有匹配的 ban:修剪所有匹配值 hash_data:指明做哈希的数据 synthetic:执行修剪12、varnish配置总结