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个请求

时间: 2024-08-24 12:39:02

varnish解读的相关文章

解读大型网站的演变过程

有一次去图书馆看书,遇到一个刚毕业不久,在图书馆学习php,我就和他聊天,他期间问到一个问题"如何开发一个大型网站",这个问题吓不倒我呀,我了解一些了,当时就和他连说带比划了一次,回家了我仔细又想了想,觉得还是写篇文章记录下 任何网站都是从一个小网站 演变成 一个复杂的网站的(后面我们用成熟的网站表示大型网站) 才开始一个网站不可能非常成熟的,都是随着用户量的增长,业务功能的不断扩展逐渐完善的 第一:最初的网站架构 这个时候应该是最简单的架构了,应用程序,文件,数据库,web软件 都放

ViewGroup源码解读

我们之前刚刚分析完事件传递机制和view的源码,如果没有看过的,建议看完View的事件拦截机制浅析以及View的事件源码解析.这次我们来分析下viewgroup的. 可能有人会想,怎么又是源码分析,肯定又是一大通.其实没你想的那么复杂.仔细分析一波就行了. 解读ViewGroup 我们都知道,一个事件完整的流程是从dispatchTouchevent–>onInterceptTouchevent–>onTouchEvent.我们先不说事件监听的问题.上述三个步骤就是正常一个点击的流程.前面我们

mysql之show engine innodb status解读(转)

add by zhj: 我第一次知道这个命令是线上服务出了问题,然后同事用这个命令去查看死锁.但用这个命令看死锁有一定的局限性,它只能看到最后一次死锁, 而且只能看到死锁环中的两个事务所执行的最后一条语句(即被死锁卡住的那条语句),看不到整个死锁环,也看到不整个事务的语句.但是即使这亲,对我 们来说也非常有用,因为一般来说,数据库同时存在多个死锁环的可能性比较小,而且有了死锁环中的事务的最后一条语句,我们找到整个死锁环不是太难. "show engine innodb status"这

智慧中国杯百万大奖赛解读 | 学霸去哪了(二)

在上一篇中我们探讨了学生的消费数据,消费数据对本次竞赛预测来讲很重要.本篇将探索寝室门禁.图书借阅.图书馆门禁和学生成绩等一些和学生学习相关的数据,来看看学生的品行如何,虽然资助金和奖学金的性质不太一样,但我们毕竟还是想资助那些品学兼优的学生,而不是资助虽然家境很贫寒但不学无术的学生. 所以本篇探索的数据可以比较好的反应出这些情况.当然这里面还隐藏了更好玩的话题,学霸去哪了?话不多说,let's go! 一.数据目录概况 官方提供的数据分为两组,分别是训练集和测试集,每一组都包含大约1万名学生的

QCustomplot使用分享(二) 源码解读

一.头文件概述 从这篇文章开始,我们将正式的进入到QCustomPlot的实践学习中来,首先我们先来学习下QCustomPlot的类图,如果下载了QCustomPlot源码的同学可以自己去QCustomPlot的目录下documentation/qcustomplot下寻找一个名字叫做index.html的文件,将其在浏览器中打开,也是可以找到这个库的类图.如图1所示,是组成一个QCustomPlot类图的可能组成形式. 一个图表(QCustomPlot):包含一个或者多个图层.一个或多个ite

Apache+varnish(高性能开源HTTP加速器)搭建负载均衡集群

实验环境:RHEL6.5 实验环境4台 真机进行访问测试     willis.example.com         172.25.254.6 虚拟机1(缓存端)   varnish.example.com       172.25.254.8 虚拟机2(服务器端1) web1.example.com     172.25.254.10 虚拟机3(服务器端2) web2.example.com     172.25.254.20 两台服务器主要用于负载均衡实验. 实验内容:1.服务器端安装Ap

以蓝牙开发的视觉解读微信Airsync协议

微信硬件平台使用蓝牙作为近场控制的连接件,并拟定了<微信蓝牙外设协议>.这份协议更像一个标准,用于规范微信和蓝牙外设之间的数据交互场景和接口.但从开发者来看,要完全读懂这份协议,恐怕需要熟读很多遍,并且要结合调试才能真正实现微信Airsync通信.笔者对IOT和微信硬件平台的整个框架和技术都比较熟悉了,并且已经在TI的CC254X和Dialog的DA14580上实现了微信Airsync协议通信.现在回过头来,从开发的角度,对微信Airsync协议进行重新解读,以帮助新进入物联网领域的开发者更快

varnish 4.0强制gzip压缩

如果源服务器没有开启gzip, 那么无论客户端是否支持,默认情况下得到的结果总是不压缩的. 源服务器未启用gzip的情况,强制将取到的内容gzip压缩后存入缓存,然后客户端就可以得到gzip压缩结果,配置代码片段: sub vcl_backend_response { if (beresp.http.content-type ~ "(text|javascript|txt)" ) { set beresp.do_gzip = true; } varnish 4.0默认是接收压缩内容的,

Ehcache详细解读

Ehcache详细解读 Ehcache  是现在最流行的纯Java开源缓存框架,配置简单.结构清晰.功能强大,最初知道它,是从Hibernate的缓存开始的.网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google:对于API,官网上介绍已经非常清楚,请参见官网:但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析EhCache的特性,加上一些自己的理解和思考,希望对缓存感兴趣的朋友有所收获. 一.特性一览 ,来自官网,简单翻译一下