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百度排名会靠前,甚至权重会提高?作为一个 ...
随机推荐
- windows共享如何重新登录,或用另外的用户登录
使用net use * /del 可以结束已有的所有连接,或net use \\192.168.1.10 /del可以结束指定连接.比如想重新登录共享的话,就用这个命令结束原来的连接,就可以重新登录 ...
- 关于Scrapy爬虫项目运行和调试的小技巧(下篇)
前几天给大家分享了关于Scrapy爬虫项目运行和调试的小技巧上篇,没来得及上车的小伙伴可以戳超链接看一下.今天小编继续沿着上篇的思路往下延伸,给大家分享更为实用的Scrapy项目调试技巧. 三.设置网 ...
- 字符串格式化输出、while循环、运算符、编码
1.字符串格式化输出 %占位符: %s => 字符串 %d=>整数型 %%=>转义 普通的% %()不能多,不能少,一一对应 f"{}"大括号里的内容一般都放变量 ...
- vue循环遍历给div添加id
html部分 <div class="img-preview" v-for="(img,i) of list" :key="img.imageK ...
- NOIp模拟赛三十四(yxq供题)
毒瘤yxq! 毒瘤yxq! 毒瘤yxq! 据yxq自己说,林导让他出题的时候要求是“代码量少”,“思维难度高”,“不涉及太复杂的算法”,而且“最好要让myh有一题做不出来”(狙击myh).于是今天的题 ...
- UI控件设置
去掉cesium默认的版权信息: 在style样式中添加 .cesium-widget-credits {display:none !important} 去掉动画控件.地址搜索控件.图层选择控件.操 ...
- /application/nginx/sbin/nginx -h
[root@web03 ~]# /application/nginx/sbin/nginx -h nginx version: nginx/1.6.3Usage: nginx [-?hvVtq] [- ...
- 使用AFNetworking第三方下载类
AFNetworking 眼下使用比較多得一个下载库 眼下一直在维护更新,使用的是很easy 不须要加入不论什么关联的库 1.带block形式 内部是任务队列进行下载 就是对operation的一 ...
- 在Linux的终端中显示BMPString的内容
在上一篇博文中,介绍了怎样在 Windows 的控制台界面下输出 BMPString 的内容,可是那里的方法在 Linux 下不适用.假设将那里的演示样例代码放到 Linux 下运行.输出的结果为乱码 ...
- 设置Webdriver启动chrome为默认用户的配置信息
Webdriver 启动Chrome浏览器时,默认是打开一个新用户,而非默认用户.即新用户没有我们安装扩展程序.但在实际应用中,我们会须要 默认用户安装的一些扩展程序,比方对于某些js或者css样式. ...