Varnish 缓存加速, Varnish 菜鸟看过来,Varnish实战
Varnish可以有效降低web服务器的负载,提升访问速度。按照HTTP协议的处理过程,web服务器接受请求并且返回处理结果,理想情况下服务器要在不做额外处理的情况下,立即返回结果,但实际情况并非如此。
当把Varnish部署上之后,web请求的处理过程会有一些变化。客户端的请求将首先被Varnish接受。Varnish将分析接收的请求,并将其转发到后端的web服务器上。后端的web服务器对请求进行常规的处理,并将依次将处理结果返回给Varnish。
但Varnish的功能并非仅限于此。Varnish的核心功能是能能将后端web服务器返回的结果缓存起来,如果发现后续有相同的请求,Varnish将不会将这个请求转发到web服务器,而是返回缓存中的结果。这将有效的降低web服务器的负载,提升响应速度,并且每秒可以响应更多的请求。Varnish速度很快的另一个主要原因是其缓存全部都是放在内存里的,这比放在磁盘上要快的多。诸如此类的优化措施使得Varnish的相应速度超乎想象。但考虑到实际的系统中内存一般是有限的,所以需要手工配置一下缓存的空间限额,同时避免缓存重复的内容。
安装命令
sudo wget http://repo.varnish-cache.org/source/varnish-3.0.3.tar.gz
启动命令.
/usr/local/test/varnish-3.0.3/bin/varnishd/varnishd -f /usr/local/test/varnish-3.0.3/etc/default.vcl
妈个鸡 竟然报错。
原来HTML 分开了行 他就不认识了。 语法跟JAVA拼接字符串一样。。
-t 300 默认ttl时间存在5分钟(这个有点怪异,他是说从第一次来到他滚蛋总共有5分钟)
/usr/local/test/varnish-3.0.3/bin/varnishd/varnishd -f /usr/local/test/varnish-3.0.3/etc/default.vcl -t 120s
sub vcl_hit {
if(obj.hits>=100){
set obj.ttl=1h;
}
set obj.ttl=30m;
}
}


netstat -antl|grep 30001
其中,80端口为varnish的代理端口,3500为varnish的管理端口。
- [root@varnish-server ~]# curl -I http://www.ixdba.net/a/mz/2010/0421/11.html
- X-Cache: MISS from www.ixdba.net
#这里的"MISS"表示此次访问没有从缓存读取。
再次打开这个页面,查看网页头信息:
- [root@varnish-server ~]# curl -I http://www.ixdba.net/a/mz/2010/0421/11.html
- X-Cache: HIT from www.ixdba.net
#由“HIT”可知,第二次访问此页面时,是从缓存中读取内容了,也就是缓存命中。
缓存命中率的高低直接说明了varnish的运行状态和效果,较高的缓存命中率说明了varnish运行状态良好,web服务器的性能也会提高很多,反之,过低的缓存命中率说明varnish的配置可能存在问题,那么就需要进行调整,因此,从整体上了解varnish的命中率和缓存状态,对于优化和调整varnish至关重要。
varnish提供了一个varnishstat命令,通过它可以帮我们获得很多重要的信息。
下面是一个varnish系统的缓存状态:
- [root@varnish-server ~]#/usr/local/varnish/bin/varnishstat -n /data/varnish/cache
- Hitrate ratio: 10 100 113
- Hitrate avg: 0.9999 0.9964 0.9964
- 9990 68.92 49.70 Client connections accepted
- 121820 953.84 606.07 Client requests received
- 112801 919.88 561.20 Cache hits
- 68 0.00 0.34 Cache misses
- 2688 33.96 13.37 Backend conn. success
- 6336 1.00 31.52 Backend conn. reuses
- 2642 33.96 13.14 Backend conn. was closed
- 8978 29.96 44.67 Backend conn. recycles
- 6389 1.00 31.79 Fetch with Length
- 2630 32.96 13.08 Fetch chunked
- 444 . . N struct sess_mem
- 23 . . N struct sess
- 64 . . N struct object
- 78 . . N struct objectcore
- 78 . . N struct objecthead
- 132 . . N struct smf
- 2 . . N small free smf
- 3 . . N large free smf
- 6 . . N struct vbe_conn
- 14 . . N worker threads
- 68 1.00 0.34 N worker threads created
- 0 0.00 0.00 N queued work requests
- 1201 11.99 5.98 N overflowed work requests
- 1 . . N backends
- 4 . . N expired objects
- 3701 . . N LRU moved objects
- 118109 942.85 587.61 Objects sent with write
- 9985 71.91 49.68 Total Sessions
- 121820 953.84 606.07 Total Requests
defaule 配置文件复制如下。。
- backend default {
- .host = "172.28.6.131"; # 拦截服务器IP
.port = "31001"; # 端口号 .connect_timeout = 2s;
.first_byte_timeout= 2s;
}
sub vcl_recv {
} - sub vcl_deliver {
set resp.http.x-cache=obj.hits;
return (deliver);
}# 显示x_cache 用。- sub vcl_hit {
if(obj.hits>=100){
set obj.ttl=1h;
}
}
sub vcl_recv {
if (req.request != "GET" && !req.url ~ "\.(gif|jpg|swf|png|jpg)"){
return (pass);
}
}
backend default {
.host = "172.28.6.131";
.port = "31001";
.connect_timeout = 60s;
.first_byte_timeout= 60s;
# set obj.ttl = 300s;
}
sub vcl_recv {
}
sub vcl_deliver {
set resp.http.x-cache=obj.hits;
return (deliver);
}
sub vcl_hit {
# -t 300 5 minute hit >= 10 30 minute;
if(obj.hits>= 3 && obj.hits < 15){
set obj.ttl = 10m;
}
if (obj.hits >= 15 && obj.hits < 100 ){
set obj.ttl = 50m;
}
if (obj.hits > 100){
set obj.ttl = 3h;
}
}
sub vcl_recv {
if (req.request != "GET" && !req.url ~ "\.(gif|jpg|swf|png|jpg)"){
return (pass);
}
}
传说中他是一个启动工具。 我没用过
wget -O varnishd https://raw.github.com/gist/3671408/3a51578bbd60a4cf8317bdc9508527b81eb23da5/varnishdcp varnishd /etc/init.d/varnishdchmod +x /etc/init.d/varnishd/etc/init.d/varnishd start
偷来的Varnish启动命令参数 varnishd指令
Varnish启动的命令是/usr/local/varnish/sbin/varnishd,此命令参数较多,用法比较复杂,在命令行执行“/usr/local/varnish/sbin/varnishd –h”即可得到varnishd的详细用法,表2-6列出了varnishd常用参数的使用方法和含义。
表1
- 命令参数 参数含义
- -a address:port 表示varnish对httpd的监听地址及其端口
- -b address:port 表示后端服务器地址及其端口
- -d 表示使用debug调试模式
- -f file 指定varnish服务器的配置文件
- -p param=value 指定服务器参数,用来优化varnish性能
- -P file Varnish进程PID文件存放路径
- -n dir 指定varnish的工作目录
- -s kind[,storageoptions] 指定varnish缓存内容的存放方式,常用的方式有:“-s file,<dir_or_file>,<size>”。
- 其中“<dir_or_file>”指定缓存文件的存放路径,“<size>”指定缓存文件的大小
- -t 指定缺省的TTL值
- -T address:port 设定varnish的telnet管理地址及其端口
- -w int[,int[,int]] 设定varnish的工作线程数,常用的方式有:
- -w min,max
- -w min,max,timeout
- 例如:-w5,51200,30,这里需要说明下,在varnish2.0版本以后,最小启动的线程数不能设定过大,设置过大,会导致varnish运行异常缓慢。
-V 显示varnish版本号和版权信息
Varnish 缓存加速, Varnish 菜鸟看过来,Varnish实战的更多相关文章
- varnish实现缓存加速
varnish实现缓存加速 一.采用varnish为nginx实现缓存加速1.实验环境:(1)一台varnish缓存服务器,一台nginx服务器(2)关闭防火墙和selinux2.配置varnish( ...
- Varnish缓存服务器的搭建配置手册
Varnish缓存服务器的搭建配置手册 1.Varnish官方环境依赖提示 Installing Varnish Cache is as simple as enabling our package ...
- Varnish缓存服务
Varnish缓存服务详解及应用实现 1.varnish的基本介绍 Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一,他认为现在的计算机比起1975年已 ...
- Varnish缓存服务详解及应用实现
1.varnish的基本介绍 Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一,他认为现在的计算机比起1975年已经复杂许多.在1975年时,储存媒介只有 ...
- varnish缓存系统基础知识
缓存系统类型 1.页面缓存/pageCache 缓存静态资源(html js css image) 例如:varnish squid 2.数据缓存/dataCache 缓存应 ...
- WEB缓存系统之varnish缓存项修剪
前文我们聊了下varnish的状态引擎和不同类型的变量对应该使用在那个状态引擎中,以及每个状态引擎的对应处理事务:回顾请参考https://www.cnblogs.com/qiuhom-1874/p/ ...
- 关于varnish缓存
目录 缓存的概念 一.varnish缓存 1. 简介 2. 总体结构 2.1 两个主进程 2.1.1 Management进程 2.1.2 Child/Cacher进程 2.2 Varnish的日志收 ...
- varnish缓存安装使用
varnish PDF http://files.cnblogs.com/jimingsong/varnish.pdf 目前介绍CentOS6.4-64位系统 yum安装varnish: 配置varn ...
- MIP缓存加速原理 MIP不仅仅只是CDN
什么是MIP?我想我们现在都知道.可是你真的了解MIP吗?MIP加速原理是什么?MIP 是用 CDN 做加速的么?准确答案是:是,但不只是. 很多人并认为MIP百度排名会靠前,甚至权重会提高?作为一个 ...
随机推荐
- http扩展请求头中的x-Forwarded-For
X-Forwarded-For格式: X-Forwarded-For: client-ip, proxy1-ip, proxy2-ip 客户端请求服务器的过程中没经过一个代理层(代理中使用了xff)那 ...
- js&jQ判断checkbox表单是否被选中
js判断: if(document.getElementById("checkboxID").checked){ alert("checkbox is checked&q ...
- 3dmax快速实现一个逼真地毯效果
3dsmax怎么制作逼真的毛绒地毯模型?3dsmax中想要中想要建模长方形的毛绒地毯,该怎么制作呢?下面我们就来看看详细的教程,需要的朋友可以参考下: 1.在创建面板-扩展基本体下选择切角长方体 2. ...
- 6、DRN-----深度强化学习在新闻推荐上的应用
1.摘要: 提出了一种新的深度强化学习框架的新闻推荐.由于新闻特征和用户喜好的动态特性,在线个性化新闻推荐是一个极具挑战性的问题. 虽然已经提出了一些在线推荐模型来解决新闻推荐的动态特性,但是这些方法 ...
- 浅谈python 中正则的一些函数
主要的函数有 : match() search() findall() group() groups() split() match (): 含义 开头匹配,匹配成功返回一个对象失败则 ...
- Oracle日期的加减运算
无论是DATE还是timestamp都可以进行加减操作.可以对当前日期加年.月.日.时.分.秒,操作不同的时间类型,有三种方法: 1 使用内置函数numtodsinterval增加小时,分钟和秒2 加 ...
- linux进程管理之轻量级进程(四)
在Linux中,轻量级进程可以是进程,也可以是线程.我们所说的线程,在Linux中,其实是轻量级进程之间共享代码段,文件描述符,信号处理,全局变量时: 如果不共享,就是我们所说的进程. 进程是资源管理 ...
- 【图灵杯 A】谷神的赌博游戏
[题目链接]:http://oj.acmclub.cn/problem.php?cid=1164&pid=0 [题意] [题解] 把每个数字都%3处理; 会发现最后1的个数为n+1 2和0的个 ...
- 项目集成Hudson+SonarQube出现的一个问题
[ERROR] No plugin found for prefix 'sonar' in the current project and in the plugin groups [org.mort ...
- ESRI.ArcGIS.Controls.AxMapControl
今天在写DLL时发现,直接引用ESRI.ArcGIS.Controls,发现AxMapControl的参数仍然不好用,后来发现,需要引用ESRI.ArcGIS.AxControls这个DLL.而且还需 ...