varnish2.X配置
作者:别样青年别样范儿bo | 来源:互联网 | 2014-05-28 12:03
Varnish2.0.3hasjustbeenreleased.Thisreleasecontainsmultiplechanges,amongstthem:SupportforbackendtimeoutsMultiplefixesinhowweprocessESIrestartinvcl_hitisnowsuppo
Varnish 2.0.3 has just been released. This release contains
multiple changes, amongst them:
Support for backend timeouts
Multiple fixes in how we process ESI
restart in vcl_hit is now supported
Documentation has been updated
Expiry processing is now more scalable
The default session workspace is now 16k instead of 8k
More graceful handling of too many headers from the client or
the server.
More expressive purges
之前一直使用的还是2.0的一个trunk的R2860版本,因为只有这个版本我从1.1.2升级上来以后没有慢的问题⊙?⊙。但是看着新版却一直不能用,实在是让人心里痒。于是抱着死磕到底的态度,在检查了n+1遍配置文件和修改启动参数重启了n+1遍Varnish以后终于找到了问题的所在,即启动参数的-w这个上面。那么这个参数是干什么用的呢?
-w
int[,int[,int]]
# Number of worker threads
# -w
# -w min,max
# -w min,max,timeout [default: -w2,500,300]
可以看出这个参数是控制每个进程的线程数的,1.1.2版本的时候这个参数我配置的是-w30000,51200,10,貌似到了2.0版以后这个最小启动的线程数不能设定过大,于是在进行了几次调试以后最终将参数定为了-w5,51200,30
软件列表
pcre-8.02.tar.gz
varnish-2.1.tar.gz
软件存放位置
/data/software
安装过程
# /usr/sbin/groupadd www -g 48
# /usr/sbin/useradd -u 48 -g www www
# mkdir -p /data/vcache
# chmod +w /data/vcache
# chown -R www:www /data/vcache
# mkdir -p /var/log/varnish
# chmod +w /var/log/varnish
# chown -R www:www /var/log/varnish
# cd /data/software/pkg
# tar zxvf ../pcre-8.02.tar.gz
# cd pcre-8.02
# ./configure
# make && make install
# cd ..
# tar zxvf ../varnish-2.1.tar.gz
# cd varnish-2.1
# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
# ./configure ?prefix=/usr/local/varnish
# make && make install
编辑Varnish配置文件
# vi /usr/local/varnish/vcl.conf
backend webserver {
set backend.host =
“10.10.10.8″;
set backend.port = “80″;
}
acl purge {
“localhost”;
“127.0.0.1″;
“10.10.10.0″/24;
}
sub vcl_recv {
remove
req.http.X-Forwarded-For;
set
req.http.X-Forwarded-For = client.ip;
if (req.request ==
“PURGE”) {
if (!client.ip ~ purge) {
error 405 “Not allowed.”;
}
lookup;
}
if (req.http.host ~
“(a|b|c).test.com”) {
set req.backend = webserver;
if (req.url ~ “\.(png|gif|jpg|swf|css|js)$”) {
lookup;
}
else {
pass;
}
}
else {
error 404 “Test Cache Server”;
pipe;
}
}
sub vcl_hash {
set req.hash += req.url;
if (req.http.host) {
set req.hash +=
req.http.host;
} else {
set req.hash +=
server.ip;
}
hash;
}
sub vcl_pipe {
set req.http.cOnnection= “close”;
#pipe;
}
sub vcl_hit {
if (!obj.cacheable)
{
pass;
}
if (req.request == “PURGE”)
{
set obj.ttl = 0s;
error 200 “Purged.”;
}
deliver;
}
sub vcl_miss {
if (req.request == “PURGE”)
{
error 404 “Not in cache.”;
}
}
sub vcl_fetch {
set obj.ttl = 180s;
#set obj.http.X-Varnish-IP = server.ip;
set obj.http.Varnish = “Tested by Kevin”;
}
启动Varnish
# /usr/local/varnish/sbin/varnishd -n /data/vcache -f
/usr/local/varnish/etc/varnish/default.vcl -a 10.10.10.8:80 -s
file,/data/vcache/varnish_cache.data,50G -u www -w2,65536,60 -T
127.0.0.1:3600 -p thread_pool_min=200 -p thread_pool_max=4000 -p
thread_pools=4 -p thread_pool_add_delay=2 -p listen_depth=4096 -p
lru_interval=20
启动日志记录
#/usr/local/varnish/bin/varnishncsa -n /data/vcache -w
/var/log/varnish/varnish.log &
推荐阅读
华为与红帽携手合作,旨在加速开源电信软件的发展,以满足大型电信运营商对灵活网络解决方案的需求。 ...
[详细]
蜡笔小新 2024-11-21 13:13:49
我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ...
[详细]
蜡笔小新 2024-11-21 13:01:23
本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ...
[详细]
蜡笔小新 2024-11-21 11:02:19
本文深入讨论了前端开发中代码优化的关键技术,包括JavaScript、HTML和CSS的优化方法,旨在提升网页加载速度和用户体验。 ...
[详细]
蜡笔小新 2024-11-21 10:57:01
本文详细介绍了C++中的构造函数,包括其定义、特点以及如何通过构造函数进行对象的初始化。此外,还探讨了转换构造函数的概念及其在不同情境下的应用,以及如何避免不必要的隐式类型转换。 ...
[详细]
蜡笔小新 2024-11-21 10:41:14
1.绑定htmlcss1.1对象语法: 传给v-bind:class一个对象,以动态地切换class ...
[详细]
蜡笔小新 2024-11-21 09:36:26
在开发一个使用JavaScript、HTML和CSS的Web应用时,遇到从SQLite数据库中提取的法语词汇排序不正确的问题,特别是带重音符号的字母未按预期排序。 ...
[详细]
蜡笔小新 2024-11-21 09:08:57
数据类型--char一、char1.1char占用2个字节char取值范围:【0~65535】char采用unicode编码方式char类型的字面量用单引号括起来char可以存储一 ...
[详细]
蜡笔小新 2024-11-21 08:47:17
本文详细介绍了iOS应用的生命周期,包括各个状态及其转换过程中的关键方法调用。 ...
[详细]
蜡笔小新 2024-11-20 23:23:07
本文探讨了项目风险管理的关键环节,包括风险管理规划、风险识别、风险分析(定性和定量)、风险应对策略规划及风险控制。旨在通过系统的方法提升项目成功率,减少不确定因素对项目的影响。 ...
[详细]
蜡笔小新 2024-11-20 20:52:24
阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ...
[详细]
蜡笔小新 2024-11-20 20:05:37
用户可通过支付198元押金及30元设备维护费租赁AI智能机器人,推荐他人加入可获得相应佣金。随着推荐人数的增加,用户将逐步解锁更高版本,享受更多收益。 ...
[详细]
蜡笔小新 2024-11-20 19:37:48
本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ...
[详细]
蜡笔小新 2024-11-20 19:24:42
回顾两年前春节期间的一个个人项目,该项目原本计划参加竞赛,但最终作为练习项目完成。独自完成了从编码到UI设计的全部工作,尽管代码量不大,但仍有一定的参考价值。本文将详细介绍该项目的背景、功能及技术实现。 ...
[详细]
蜡笔小新 2024-11-20 18:42:22
本文介绍了如何从PECL下载并编译安装Xdebug扩展,以及如何配置PHP和PHPStorm以启用调试功能。 ...
[详细]
蜡笔小新 2024-11-20 18:31:50
别样青年别样范儿bo
这个家伙很懒,什么也没留下!