首页 > 代码库 > varnish解读

varnish解读

缓存相关的基础

 

根据数据是否可以缓存

       私有数据:一般为用户的私有数据,不能缓存

        共有数据:这类数据为共有数据,大部分都可缓存

 缓存有效性判断机制

过期时间

HTTP/1.0

Expires:过期时间

HTTP/1.1

Cache-Control:max-age=

Cache-Control: s-maxage=

条件式请求

Last-Modified/If-Modified-Since

Etag/If-None-Match

缓存层级:

私有缓存:用户代理的本地缓存机制,一般为浏览器自己的缓存

公共缓存:反向缓存:反向代理服务器的缓存功能,例如varnish,nginx,squid

请求报文用于通知缓存服务ruhr使用缓存响应请求

Cache-request-directive =

"no-cache":不要用缓存回应

“max-age”:缓存有效时长

“max-stale”:联系不到后端服务器时,使用过期缓存的最大时长

“min-fresh”:最小的缓存更新时长

响应报文用于通知缓存服务如何存储上级服务器响应的内容

Cache-response-directive =

"public":公共数据可以缓存

“private”:只缓存私有数据

“no-cache”:可缓存,但响应给客户端之前需要revalidation

“no-cache”:不允许储存响应内容与缓存中

Varnish

varnish的结构

技术分享

程序架构

1)Manager进程

2)Cacher进程

包含多种类型的线程:storahe,worker,Log/Stats,…..

3)shared memory log,共享内存日志

主要包含:varnishlog,varnishncsa,varnishstat。。。。

4)配置接口:VCL(varnish configuration language)

它将vcl格式的文件编译为共享对象文件

varnish程序包

varnish在epel源中,

#yum info varnish

技术分享

 

安装后的文件

/etc/varnish.varnish.params:配置varnish服务进程的工具特性,例如监听的地址和端口,缓存机制

/etc/varnish/default.vcl:配置各Child/Cache线程的缓存工作属性

主程序

/usr/sbin/varnishd

CLI interface:

/usr/bin/varnishadm

Shared memory Log交互工具

/usr/bin/varnishhist

/usr/bin/varnishlog

/usr/bin/varnishncsa

/usr/bin/varnishstat

/usr/bin/varnishtop

测试工具程序

/usr/bin/varnishtest

VCL配置文件重载程序

/usr/sbin/varish_reload_vcl

Systemd Unit File:

/usr/lib/systemd/system/varnishlog.service

/usr/lib/systemd/system/varnish.service

varnish服务

/usr/lib/systemd/system/varnishncsa.service       

日志持久的服务;

varnish的缓存存储机制( Storage Types):

-s [name=]type[,options]

· malloc[,size]

内存存储,[,size]用于定义空间大小;重启后所有缓存项失效;

· file[,path[,size[,granularity]]]

文件存储,黑盒;重启后所有缓存项失效;

· persistent,path,size

文件存储,黑盒;重启后所有缓存项有效;实验;

变量的使用作用域

技术分享

对安装wordpress的nginx和varnish测试

网络拓扑

技术分享

使用工具ab的测试结果

nginx没使用用缓存可每秒可处理400请求,在使用缓存后在450~550

varnish的测试结果为每秒可处理650~700个请求

varnish解读