码迷,mamicode.com
首页 > 其他好文 > 详细

Varnish

时间:2016-04-14 07:04:17      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:缓存

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部分),相应码304Not 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

Varnish

标签:缓存

原文地址:http://wskfnso.blog.51cto.com/4025557/1763568

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!