标签:缓存
varnish
缓存的处理步骤:
接受请求---解析请求---查询缓存---新鲜度检查---创建响应报文---发送响应---记录日志
缓存的新鲜度检测方法:
(1)过期时间:
HTTP/1.0
Expires:"Mon, 21 Mar 2016 05:02:19 GMT" 固定时间来检测
HTTP/1.1
Cache-Control:"max-age=900" 这种最多存活时时间来检测
(2)有效性再验证:revalidate
如果原始内容发生改变,就正常响应,响应码200
如果原始内容没改变,则仅相应首部(不带body部分),相应码304(Not Modified)
如果原始内容消失,响应为404,些时缓存中cache object 也应该被删除
(3) 条件式请求首部:
根据时间戳判断:
If-Modified-Since: 自从请求的时间之后,请求的资源是否发生过修改,用时间戳验证
If-Unmodified-Since:自从请求的时间之后,请求的资源是否发没有修改
根据标签来判断:
If-None-Match :本地缓存中存储的文档的Etag标签是否与服务器文档的Etag不匹配。
If-Match :本地缓存中存储的文档的Etag标签是否与服务器文档的Etag匹配。
yum 安装 varnish
# yum insatll varnish-libs-3.0.4-1.el6.x86_64.rpm varnish-3.0.4-1.el6.x86_64.rpm
backend storage:支持缓存存储内型有3种
malloc 内存
file 文件
persistent
在varnishl 里可用单分支和多分支判断
varnish 里可用变量:
1:常用变量,在任何引擎中都可以用的,
new 获取当前系统的当前时间
.host 后端主机的ip
.port 后断主机的端口
2:用于处理请求阶段
client.ip 客户机ip
server.hostname 服务器主机名 varnish 名
server.ip 服务器主ip varnish ip
server.port 服务器端口 varnish 端口
req.request 请求方法
req.url 请求方法
req.porto 请求协议
req.backend 用于服务此次请求的后端主机
req.backend.healthy 健康状态
req.http.HEADER 引用请求报文中指定的首部
req.hash-always_miss
req.hash-ignore_busy
req.can_gzip 客户端是否能接受gzip 压缩的内容
req.restarts 此请求被重启的请求
3: varnish自己 向backend 主机发起请求前可用的变量
bereq.request
bereq.url
bereq.proto
bereq.http.HEADER
bereq.connect_timeout 等待与backend主机发起的连接超时时长
4:backend主机的响应报文到达varnish主机后,将其放放置于cache中之前可用的变量。
beresp.do_stream 流式响应
beresp.do_gzip 是否压缩后存入cache
beresp.do_gunzip 是否解压后存入缓存。
beresp.http.HEADER
beresp.proto
beresp.status 响应状态码
beresp.response 响应时的原因短语
beresp.ttl 响应对象的剩余生存时长,单位为秒
beresp.backend.name 相应报文来源的backend名称
beresp.backend.ip
beresp.backend.port
beresp.storage 响应的存储后端
5:缓存对象存入的ccache之后可用的变量
obj,proto
obj.status
obj.response
obj.hits
obj.ttl
obj,http,HEADER
6:在决定对请求键做hash计算时可用的变量
req.hash
7:在为客户端准备响应时报文可用变量
resp.proto
resp.status
resp.response
resp.http.HEADER
状态引擎:
vcl_init: 在装载vcl,用其处理请求之前
vcl_recv: 请求被接入,但在其分析,处理完成之前。
是否服务些请求,如何服务,使用那个后端主机服务
vcl_fetch:从后端口主机收到相应报文之前被调用
管理varnish 装载配置文件
# varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082
varnish> vcl.list
200
active 2 boot
varnish> vcl.load apache24 default.vcl
200
VCL compiled.
varnish> vcl.list
200
active 2 boot
available 0 apache24
varnish> vcl.use apache24
200
varnish> vcl.list
200
available 2 boot
active 0 apache24
# curl -I http://192.168.10.101/index.php
# curl -I -X PURGE http://192.168.10.101/index.php
warnish 的param的查看和修改:
varnish> param.show -l
修改链接池一些值,但是这种方法只对当前有效果
varnish> param.set thread_pool_max 4000
200
cache-worker 线程
cache-mian 线程:些线程只有一个,用来启动cache
ban luker:
acceptor:
epoll: 线程池管理
expire: 清理过期缓存
thread_pool_add_delay 2 [milliseconds]
thread_pool_add_threshold 2 [requests]
thread_pool_fail_delay 200 [milliseconds]
thread_pool_max 3000 [threads] 单个线程池启动最多线程个数
thread_pool_min 50 [threads]
thread_pool_purge_delay 1000 [milliseconds] 每一秒清理一次缓存,请保留默认
thread_pool_stack unlimited [bytes]
thread_pool_timeout 120 [seconds] 线程池的超时时间,
thread_pool_workspace 65536 [bytes] 线程池默认使用多少内存,建议默认
thread_pools 2 [pools] 线程池管理
thread_stats_rate 10 [requests]
varnish的命令行工具:
(1)varnishadm
(2)varnishtop:内存日志区域查看工具
RxHeader User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebK
it/53
RxHeader:为tag,基于标签过虑,可用-i或-x 选项,
User-Agent 为起始内容。称为日志消息。用-I或-X过滤
-I regexp:仅显示被模式匹配到的条目
-X regexp:仅显示不被模式匹配到的条目
-C:忽略大小写
-d:显示已有日志
(3)varnishstat 缓存统计
-l 列出所有字段
-f 统计字段 -f后接的字段名
-x:xml输出格式
-j:json 格式输出
本文出自 “centos6 运维学习” 博客,请务必保留此出处http://wskfnso.blog.51cto.com/4025557/1763568
标签:缓存
原文地址:http://wskfnso.blog.51cto.com/4025557/1763568