varnish cache 配置使用
来源:互联网 发布:任务栏软件图标空白 编辑:程序博客网 时间:2024/06/04 10:21
原贴:http://www.chinaunix.net/jh/38/987084.html
[精彩] varnish cache 配置使用
http://www.chinaunix.net 作者:ljh1405 发表于:2009-03-07 15:07:07【发表评论】【查看原文】【Proxy服务器讨论区】【关闭】
varnishd 配置及其使用
varnishd是一款全新的cache软件,据作者说采用的是最新的软件体系机构,和现在的硬件体系配合紧密。远胜过以前的squid,相同配置下,据说1台能顶3-4台squid
varnishd简单安装
1.下载varnishd
varnish 官方网站是http://varnish.projects.linpro.no/
2.编译,没什么说的,默认即可
tar -zxvf varnish-1.1.1.tar.gz;cd varnish-1.1.1; ./configure --prefix=/home/admin/varnishd;make ;make install
3.关于varnishd的启动
进入 /home/admin/varnishd/sbin/,使用 varnishd启动
启动参数说明
-a address:port # varnishd httpd监听地址及其端口
-b address:port # 后台服务器地址及其端口
# -b <hostname_or_IP>
# -b '<hostname_or_IP>:<port_or_service>'
-d # 使用debug模式
-f file # varnishd 服务器存取规则文件
-F # Run in foreground
-h kind[,hashoptions] # Hash specification
# -h simple_list
# -h classic [default]
# -h classic,<buckets>
-n dir # varnishd working directory
-P file # PID file
-p param=value # 服务器参数,用来优化性能
-s kind[,storageoptions] # 缓存内容存放方式
# -s malloc
# -s file [default: use /tmp]
# -s file,<dir_or_file>
# -s file,<dir_or_file>,<size>
-t # Default TTL
-T address:port # telnet管理地址及其端口
-V # version
-w int[,int[,int]] # 工作线程数
# -w <fixed_count>
# -w min,max
# -w min,max,timeout [default: -w1,1000,120]
一般使用varnishd -a address:port -b address:port 其他使用默认即可启动
注意:vcl 中指定 后台服务器的话就不用使用-b 参数了
4.关于vcl文件的使用说明
vcl是varnishd的存取策略,即varnishd的配置文件
#基本格式如下指定后台服务器机器端口
backend www {
set backend.host = "www.example.com";
set backend.port = "http";
}
#acl访问控制
acl local {
"locahost"; /* myself */
"10.0.0.1"/8; /* and everyone on the local network */
! "10.0.0.23"; /* except for the dialin router */
}
#如果使用虚拟主机,请参照下面代码
backend www {
set backend.host = "www.example.com";
set backend.port = "80";
}
backend images {
set backend.host = "images.example.com";
set backend.port = "80";
}
sub vcl_recv {
if (req.http.host ~ "^(www.)?example.com$") {
set req.backend = www;
} elsif (req.http.host ~ "^images.example.com") {
set req.backend = images;
} else {
error 404 "Unknown virtual host";
}
}
#关于cache存在时间设置
sub vcl_fetch {
if (obj.ttl < 120s) {
set obj.ttl = 120s;
}
}
#cache图片等内容配置
sub vcl_recv {
if (req.request == "GET" && req.url ~ "/.(gif|jpg||jpeg|tom|swf|css|js)$") {
lookup;
}
lookup;
}
5.关于服务器 param的设置
param有以下选项
user root (0)
group root (0)
default_ttl 14400 [seconds]
thread_pools 1 [pools]
thread_pool_max 12000 [threads]
thread_pool_min 4000 [threads]
thread_pool_timeout 10 [seconds]
overflow_max 100 [%]
http_workspace 8192 [bytes]
sess_timeout 5 [seconds]
pipe_timeout 60 [seconds]
send_timeout 20 [seconds]
auto_restart on [bool]
fetch_chunksize 128 [kilobytes]
sendfile_threshold unlimited [bytes]
vcl_trace off [bool]
listen_address 172.16.189.1:3128
listen_depth 1024 [connections]
srcaddr_hash 1049 [buckets]
srcaddr_ttl 720 [seconds]
backend_http11 on [bool]
client_http11 on [bool]
ping_interval 3 [seconds]
大家可以使用-p参数在启动时候进行配置和优化
例如
/home/admin/varnish/sbin/varnishd -f /etc/varnish/vcl.conf /
-a 172.16.189.1:3128 /
-s malloc /
-p user root -p group root /
-p default_ttl 14400 -p thread_pool_max 8000 -p send_timeout 20 /
-p srcaddr_ttl 720 -p backend_http11 on -p client_http11 on /
-w 4000,12000,10 -T 127.0.0.1:8080
6.关于varnishd的管理
管理功能的启用需要在启动varnishd的时候 启动 -T参数指定 telnet管理使用的地址和端口
使用telnet localhost 8080,然后输入help参看相关的管理选项
或者使用 /home/admin/varnishd/bin/varnishadm -T localhost:8080 cmd进行管理
使用/home/admin/varnishd/bin/varnishstat 来查看varnishd的运行情况
7.关于log
使用home/admin/varnishd/bin/varnishlog 和varnishncsa查看服务器访问log或者让其输出到文件来记录log
具体问题可以在我的blog商讨
http://blog.chinaunix.net/u1/47198/showart_375385.html
w_jia82102 回复于:2007-09-06 16:09:44
试试先
powerv 回复于:2007-09-06 18:52:49
先顶了再看,支持给楼主加精华,鼓励。
huichrist 回复于:2007-09-10 09:55:45
我按你上面的文章配置了一下,还是有问题的!配置虚拟主机的时候有如下提示:Unused backend www, defined:
(/usr/local/varnish/etc/vg.vcl.default Line 10 Pos 9)
backend www {
--------###--
我的配置如下:
backend default {
set backend.host = "www.rednetunion.com";
set backend.port = "80";
}
sub vcl_recv {
if (req.request == "GET" && req.url ~ "/.(gif|jpg|swf|css|js)$") {
lookup;
}
}
backend www {
set backend.host = "www.rednetunion.com";
set backend.port = "80";
}
vcl.conf如下:
#!/bin/sh
# file: go.sh
date -u
/usr/local/varnish/sbin/varnishd /
-a 192.168.1.199:80 /
-s file,/varnishcache/V,24m /
-f /usr/local/varnish/etc/vg.vcl.default /
-p thread_pool_max=1500 /
-p thread_pools=5 /
-p listen_depth=512 /
-p client_http11=on /
-p backend_http11=on /
是在FreeBsd6.2平台的。请教指教!!!
ruolin 回复于:2007-09-10 14:27:54
引用:原帖由 huichrist 于 2007-9-10 09:55 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7328577&ptid=987084]
我按你上面的文章配置了一下,还是有问题的!配置虚拟主机的时候有如下提示:Unused backend www, defined:
(/usr/local/varnish/etc/vg.vcl.default Line 10 Pos 9)
backend www {
--------###--
我的配置 ...
这种错误说明设置的反向代理没有被使用
backend www不是默认的代理名称,如果没有没有使用在check的时候会提示错误,可以在vcl_recv中指定set req.backend=www;
huichrist 回复于:2007-09-11 09:19:47
你好呀,看你的回贴明白了一些,可是vcl里面的具体的东西,还是有些不明白,能不能就你自己研究过程,做一个manual出来,我相信大家也是好期待的,谢谢大家的回帖!!!
xooass 回复于:2007-09-11 10:56:52
我最近也在研究这个 不过我弄出来的速度很慢 本来1秒可以完全打开的页面 经过varnish后居然10秒后才能打开 不知道哪里错误了 用的官方RHEL 4 RPM包
powerv 回复于:2007-09-22 13:39:24
我也是感觉比以前用squid更慢了。并且我配置后,发现好象没生成cache文件。
ljh1405 回复于:2007-09-24 11:38:48
为了测试效果,建议大家使用firefox firebug去查看,如果是varnish cache了,会有tag,如果没有请检查你的配置文件,以及是否做好了hosts 绑定等操作
haohaoo 回复于:2007-09-24 17:45:09
上次测试过一回,觉得这个东西用在本机前端cache可能比较合适
Asyouwish 回复于:2007-09-28 16:04:40
引用:原帖由 xooass 于 2007-9-11 10:56 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7334264&ptid=987084]
我最近也在研究这个 不过我弄出来的速度很慢 本来1秒可以完全打开的页面 经过varnish后居然10秒后才能打开 不知道哪里错误了 用的官方RHEL 4 RPM包
觉得慢的同学,把pass改为pipe试试
powerv 回复于:2007-10-03 09:54:33
引用:原帖由 Asyouwish 于 2007-9-28 16:04 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7415361&ptid=987084]
觉得慢的同学,把pass改为pipe试试
将VCL配置中的所有PASS改为PIPE?楼上的大哥,麻烦说清楚点,最好给出具体的配置文件供参考学习。谢谢
ylfxx 回复于:2007-11-15 15:42:39
米有用过。。准备尝试下`~
likuku 回复于:2007-11-21 14:43:24
初步尝试,觉得 varnish 比 squid 要慢。
zxxz79 回复于:2007-12-05 10:16:26
换了varnish测试几小时,效果不是很好
我原来的环境一台squid连接大概是在3000左右
换成varnish后连接只有300多,但流量还算正常。不知道varnish是不是牛在这
换了后发现bbs出了问题,DZ、DVBBS都试过,貌似验证码都被缓存掉了,而且有用户登陆后显示了别人的用户名,汗啊。
主要也是中文资料太少了。我相信varnish是行的,只是大家都对配置语法不熟悉。:)
minuteman 回复于:2007-12-06 11:32:09
我用varnish跑了2天了,
也碰到过和楼上一样的情况,不过我想可能是vcl写的有问题+varnish不支持HTTP1.1的原因,具体我不是很明白
但看到有人说在recv里加
if (req.http.Cache-Control ~ "no-cache") {
pass;
}
在fetch里加
if (obj.http.Pragma ~ "no-cache" || obj.http.Cache-Control ~ "no-cache" || obj.http.Cache-Control ~ "private") {
pass;
}
我实际上用下来感觉,TCP连接数确实比squid少,响应速度是快的,但是不稳定的,并且不太适合论坛等动态为主的带cookie的环境,带cookie的东西,lookup起来貌似有问题,经常张冠李戴。
说不稳定,是因为碰到过varnishd占cpu100%的情况,只能重启
用manpage里带的例子VCL做配置,就从来没有hit过,而成了hit for pass,我想这是没有用的。
[ 本帖最后由 minuteman 于 2007-12-6 11:34 编辑 ]
cyclonical 回复于:2009-03-07 15:07:07
谢谢,我正在研究这东东,发现这贴很适合我
原文链接:http://bbs.chinaunix.net/viewthread.php?tid=987084
转载请注明作者名及原文出处
- varnish cache 配置使用
- varnish cache 配置使用
- haproxy + varnish cache配置
- varnish cache使用测试
- (反向代理 + cache) varnish 使用 (实例)
- Varnish+Nginx 配置----Varnish
- Varnish cache for Magento
- varnish配置
- Varnish配置
- varnish 配置
- linux下varnish安装及配置使用
- Varnish Cache 3.0.0安装
- 用Varnish搭建Cache服务器
- varnish/squid/nginx cache比较
- varnish cache 反向代理服务器和http加速器的安装和配置
- varnish安装配置全过程
- Linux+varnish安装配置
- varnish安装配置
- Oracle远程无法startup,提示"ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 "的解决方法
- 我自己简单写的32转换成 16 位的MD5方式
- 当使用BCMenu 时,发现菜单不显示不一致时的处理
- 开发人员日常工作之一 - Check In代码
- 一个效果不错的Java数据库连接池
- varnish cache 配置使用
- 图片动态显示
- Android Initialization Process
- java不用驱动连接MSSQL数据库
- 飞鸽传书还可以做朋友么?
- Winsock学习笔记1:Winsock基本函数
- 检测点12.1
- bitwise copy
- 抓取网页内容