站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
Varnish
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
[[Image:varnish_logo.gif|right|thumb|200px|Varnish [[logo]]]] '''Varnish'''是一款高性能的[[开源]][[HTTP]]加速器。在[[Linux]] 2.6、[[FreeBSD]]6/7和[[Solaris]] 10可以体现其高性能。 Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一,他认为现在的[[计算机]]比起[[1975年]]已经复杂许多。在1975年时,储存媒介只有两种:内存与硬盘。但现在计算机系统的内存除了主存外,还包括了[[CPU]]内的L1、L2,甚至有L3快取。硬盘上也有自己的快取装置,因此Squid Cache自行处理物件替换的架构不可能得知这些情况而做到最佳化,但[[操作系统]]可以得知这些情况,所以这部份的工作应该交给操作系统处理,这就是 Varnish cache设计架构。 挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台[[Squid]],性能比以前更好。 ==Varnish特性== 1、Varnish采用了“Visual Page Cache”技术,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存、磁盘中交换文件,性能要比Squid高。 2、Varnish的稳定性还不错,我管理的一台图片服务器运行Varnish已经有一个月,没有发生过故障,而进行相同工作的Squid服务器就倒过几次。 3、通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存,这一点是Squid不能具备的。 ==Varnish教程== 安装配置 在我看来,使用Varnish代替Squid的理由有三点: 1、Varnish采用了“Visual Page Cache”技术,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存、磁盘中交换文件,性能要比Squid高。 2、Varnish的稳定性还不错,我管理的一台图片服务器运行Varnish已经有一个月,没有发生过故障,而进行相同工作的Squid服务器就倒过几次。 3、通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存,这一点是Squid不能具备的 下面来安装Varnish网站缓存加速器(Linux系统): 1、创建www用户和组,以及Varnish缓存文件存放目录(/var/vcache): /usr/sbin/groupadd www -g 48 /usr/sbin/useradd -u 48 -g www www mkdir -p /var/vcache chmod +w /var/vcache chown -R www:www /var/vcache 2、创建Varnish日志目录(/var/logs/): mkdir -p /var/logs chmod +w /var/logs chown -R www:www /var/logs 3、编译安装varnish: wget http://blog.s135.com/soft/linux/varnish/varnish-1.1.2.tar.gz tar zxvf varnish-1.1.2.tar.gz cd varnish-1.1.2 ./configure --prefix=/usr/local/varnish make && make install 4、创建Varnish配置文件: vi /usr/local/varnish/vcl.conf 输入以下内容: 引用 backend myblogserver { set backend.host = "192.168.0.5"; set backend.port = "80"; } acl purge { "localhost"; "127.0.0.1"; "192.168.1.0"/24; } sub vcl_recv { if (req.request == "PURGE") { if (!client.ip ~ purge) { error 405 "Not allowed."; } lookup; } if (req.http.host ~ "^blog.s135.com") { set req.backend = myblogserver; if (req.request != "GET" && req.request != "HEAD") { pipe; } else { lookup; } } else { error 404 "Zhang Yan Cache Server"; lookup; } } sub vcl_hit { if (req.request == "PURGE") { set obj.ttl = 0s; error 200 "Purged."; } } sub vcl_miss { if (req.request == "PURGE") { error 404 "Not in cache."; } } sub vcl_fetch { if (req.request == "GET" && req.url ~ "\.(txt|js)$") { set obj.ttl = 3600s; } else { set obj.ttl = 30d; } } 这里,我对这段配置文件解释一下: (1)、Varnish通过反向代理请求后端IP为192.168.0.5,端口为80的web服务器; (2)、Varnish允许localhost、127.0.0.1、192.168.0.***三个来源IP通过PURGE方法清除缓存; (3)、Varnish对域名为blog.s135.com的请求进行处理,非blog.s135.com域名的请求则返回“Zhang Yan Cache Server”; (4)、Varnish对HTTP协议中的GET、HEAD请求进行缓存,对POST请求透过,让其直接访问后端Web服务器。之所以这样配置,是因为POST请求一般是发送数据给服务器的,需要服务器接收、处理,所以不缓存; (5)、Varnish对以.txt和.js结尾的URL缓存时间设置1小时,对其他的URL缓存时间设置为30天。 5、启动Varnish ulimit -SHn 51200 /usr/local/varnish/sbin/varnishd -n /var/vcache -f /usr/local/varnish/vcl.conf -a 0.0.0.0:80 -s file,/var/vcache/varnish_cache.data,1G -g www -u www -w 30000,51200,10 -T 127.0.0.1:3500 -p client_http11=on 6、启动varnishncsa用来将Varnish访问日志写入日志文件: /usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/varnish.log & 7、配置开机自动启动Varnish vi /etc/rc.local 在末尾增加以下内容: 引用 ulimit -SHn 51200 /usr/local/varnish/sbin/varnishd -n /var/vcache -f /usr/local/varnish/vcl.conf -a 0.0.0.0:80 -s file,/var/vcache/varnish_cache.data,1G -g www -u www -w 30000,51200,10 -T 127.0.0.1:3500 -p client_http11=on /usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/youvideo.log & 8、优化Linux内核参数 vi /etc/sysctl.conf 在末尾增加以下内容: 引用 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 300 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.ip_local_port_range = 5000 65000 再看看如何管理Varnish: 1、查看Varnish服务器连接数与命中率: /usr/local/varnish/bin/varnishstat 2、通过Varnish管理端口进行管理: 用help看看可以使用哪些Varnish命令: /usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 help 引用 Available commands: ping [timestamp] status start stop stats vcl.load vcl.inline vcl.use vcl.discard vcl.list vcl.show param.show [-l] [] param.set help [command] url.purge dump.pool 3、通过Varnish管理端口,使用正则表达式批量清除缓存: (1)、例:清除类似http://blog.s135.com/a/zhangyan.html的URL地址): /usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge /a/ (2)、例:清除类似http://blog.s135.com/tech的URL地址: /usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge w*$ (3)、例:清除所有缓存: /usr/local/varnish/bin/varnishadm -T 127.0.0.1:3500 url.purge *$ 4、一个清除Squid缓存的PHP函数(清除Varnish缓存同样可以使用该函数,无需作任何修改,十分方便): view plaincopy to clipboardprint? <?php function purge($ip, $url) { $errstr = ''; $errno = ''; $fp = fsockopen ($ip, 80, $errno, $errstr, 2); if (!$fp) { return false; } else { $out = "PURGE $url HTTP/1.1\r\n"; $out .= "Host:blog.s135.com\r\n"; $out .= "Connection: close\r\n\r\n"; fputs ($fp, $out); $out = fgets($fp , 4096); fclose ($fp); return true; } } purge("192.168.0.4", "/index.php"); ?> <?php function purge($ip, $url) { $errstr = ''; $errno = ''; $fp = fsockopen ($ip, 80, $errno, $errstr, 2); if (!$fp) { return false; } else { $out = "PURGE $url HTTP/1.1\r\n"; $out .= "Host:blog.s135.com\r\n"; $out .= "Connection: close\r\n\r\n"; fputs ($fp, $out); $out = fgets($fp , 4096); fclose ($fp); return true; } } purge("192.168.0.4", "/index.php"); ?> 附1:Varnish官方网站:http://www.varnish-cache.org/ 附2:2007年12月10日,我写了一个每天0点运行,按天切割Varnish日志,生成一个压缩文件,同时删除上个月旧日志的脚本(/var/logs/cutlog.sh): /var/logs/cutlog.sh文件内容如下: 引用 #!/bin/sh # This file run at 00:00 date=$(date -d "yesterday" +"%Y-%m-%d") pkill -9 varnishncsa mv /var/logs/youvideo.log /var/logs/${date}.log /usr/local/varnish/bin/varnishncsa -n /var/vcache -w /var/logs/youvideo.log & mkdir -p /var/logs/youvideo/ gzip -c /var/logs/${date}.log > /var/logs/youvideo/${date}.log.gz rm -f /var/logs/${date}.log rm -f /var/logs/youvideo/$(date -d "-1 month" +"%Y-%m*").log.gz 设置在每天00:00定时执行: /usr/bin/crontab -e 或者 vi /var/spool/cron/root 输入以下内容: 引用 0 0 * * * /bin/sh /var/logs/cutlog.sh ==Varnish相关资源== [http://down.zzbaike.com/download/varnish-2701.html Varnish最新下载] | [http://varnish.projects.linpro.no/ Varnish官方] ==相关条目== *[[HTTP]] *[[FreeBSD]] *[[代理服务器]] *[[Squid cache]] ==参考来源== *[http://down.zzbaike.com/download/varnish-2701.html 参考来源1] *[http://varnish.projects.linpro.no/ 参考来源2] [[category:开放源代码|V]] [[category:服务器|V]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)