高性能HTTP加速器Varnish(安装配置篇)(1)

Linux varnish(一款高性能的开源HTTP加速器),varnish加速器

Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang
()
使用3台Varnish代替了原来的12台squid,性能居然比以前更好。

一、安装Varnish
Varnish的安装非常简单,下面逐步介绍:
1、安装前的准备
 Varnish安装环境如下表1所示:
表1
主机名              操作系统                    IP地址
Varnish-server CentOS release 5.4    192.168.12.246
Web-server     CentOS release 5.4    192.168.12.26
接着,建立varnish用户以及用户组,并且创建Varnish缓存目录和日志目录:
[[email protected]
~]#useradd  -s /sbin/nologin varnish
[[email protected]
~]#mkdir /data/varnish/cache
[[email protected]
~]#mkdir /data/varnish/log
[[email protected]
~]#chown -R varnish:varnish  /data/varnish/cache
[[email protected]
~]#chown -R varnish:varnish  /data/varnish/log
2、获取varnish软件
 Varnish的官方站点为
这里面有varnish的最新说明文档,以及版本升级记录,从此站点可以找到varnish在SourceForge的下载链接,目前,varnish的
最新版本是Varnish
2.1.2,下载完成后的包名为varnish-2.1.2.tar.gz,此处我们就以此版本为例,进行安装配置。
3、安装pcre
如果没有安装Pcre,在编译varnish2.0以上版本时,会提示找不到pcre库,而pcre库是为了兼容正则表达式,所以必须先安装pcre库。
[[email protected]
~]#tar zxvf pcre-7.9.tar.gz
[[email protected]
~]#cd pcre-7.9/
[[email protected]
~]#./configure –prefix=/usr/local/pcre/
[[email protected]
~]#make && make install
4、安装varnish
这里我们将varnish安装到/usr/local/目录下,操作如下:
[[email protected]
~]#tar -zxvf varnish-2.1.2.tar.gz
[[email protected]
~]#cd varnish-2.1.2
[[email protected]
~]#export PKG_CONFIG_PATH=/usr/local/pcre/lib/pkgconfig
[[email protected]
~]#./configure –prefix=/usr/local/varnish \
 >–enable-dependency-trackin
>–enable-debugging-symbols
>–enable-developer-warnings
[[email protected]
~]#make
[[email protected]
~]#make install
[[email protected]
~]#cp redhat/varnish.initrc  /etc/init.d/varnish
[[email protected]
~]#cp redhat/varnish.sysconfig  /etc/sysconfig/varnish
 其中,“PKG_CONFIG_PATH”是指定varnish查找pcre库的路径,如果pcre安装在了其它路径下,在这里指定相应的路径即
可,Varnish默认查找的pcre库路径为/usr/local/lib/
pkgconfig。最后两步操作是拷贝一些varnish守护进程的初始化脚本文件,这些脚本用于varnish的启动、关闭管理等方面,在下面章节中
会进行详细讲解。
 至此,varnish安装完毕。

高性能的开源http加速器Varnish介绍

Varnish
一、varnish简介
Varnish是一款高性能的开源HTTP加速器,它比squid还稳定,且效率更高,资源占用更少。相信在反向代理,web加速方面,varnish已经有足够能力代替squid。挪威最大的在线报纸
Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好。
 
二、Varnish的结构与特点
Varnish是一个轻量级的Cache和反向代理软件,先进的设计理念和成熟的设计框架是Varnish的主要特点,现在的Varnish总共代码量不大,功能上虽然在不断改进,但是还需要继续丰富和加强。下面总结了Varnish的一些特点:
(1)是基于内存缓存,重启后数据将消失。
(2)利用虚拟内存方式,io性能好。
(3)支持设置0~60秒内的精确缓存时间。
(4)VCL配置管理比较灵活。
(5)32位机器上缓存文件大小为最大2G。
(6)具有强大的管理功能,例如top,stat,admin,list等。
(7)状态机设计巧妙,结构清晰。
(8)利用二叉堆管理缓存文件,达到积极删除目的。

三、varnish的系统架构
varnish主要运行两个进程:Management进程和Child进程(也叫Cache进程)。
 
Management进程主要实现应用新的配置、编译VCL、监控varnish、初始化varnish以及提供一个命令行接口等。Management进程会每隔几秒钟探测一下Child进程以判断其是否正常运行,如果在指定的时长内未得到Child进程的回应,Management将会重启此Child进程。
 
Child进程包含多种类型的线程,常见的如:
cache-main线程:全局只有一个,用于启动cache;
acceptor线程:接收新的连接请求并响应;
worker线程:child进程会为每个会话启动一个worker线程,因此,在高并发的场景中可能会出现数百个worker线程甚至更多;
expiry线程:从缓存中清理过期内容;
backend poll线程:每个后端服务器一个,用于检测后端服务器的健康状况;
epoll/kqueue线程:数量可配置,默认为2,用于管理线程池
 
在配置varnish时,一般只需为关注cache-worker线程,而且也只能配置其线程池的数量,而除此之外的其它均非可配置参数。与此同时,线程池的数量也只能在流量较大的场景下才需要增加,而且经验表明其多于2个对提升性能并无益处。

四、Varnish的安装
由于我使用的系统为RHEL5.8
,因此在安装varnish之前,需要安装如下软件包:
automake,autoconf,libtool,ncurses-devel,libxslt,groff,pcre-devel,pkgconfig
# yum -y install *.rpm
 
编译安装varnish
# tar xf varnish-2.1.3.tar.gz
# cd varnish-2.1.3
# ./configure –prefix=/usr/loca/varnish
 

# make  && make install

为varnish提供配置文件
将varnish的默认配置文件复制成为/etc/sysconfig/varnish
# cp /usr/local/varnish/etc/varnish/default.vcl 
/etc/sysconfig/varnish
 
创建Varnish用户和Varnish的工作目录
# useradd –s /sbin/nologin varnish
#mkdir  /web/cache
#chown –R varnish:varnish /web/cache

在varnish
2.0版本中,启动varnish之前首先需要为varnish指定后端服务器地址,因此,我们需要编辑varnish的配置文件,指定后端服务器地址。
# vim  /etc/sysconfig/varnish
添加如下信息即可:
backend default {
    .host = “127.0.0.1”;
    .port = “80”;
}
 
五、varnish的启动和停止
# /usr/local/varnish/sbin/varnishd -f /etc/sysconfig/varnish -s
malloc,200M -T 127.0.0.1:2000 -a 0.0.0.0:8080
-f:指定varnish的配置文件
-s:指定varnish的存储类型和存储容量
-T:指定一个基于本文的管理接口,可用于在不停止varnish的情况下来管理varnish
-a:指定监听的套接字
 
查看varnish是否启动成功
# netstat -tunlp | grep varnish
tcp        0      0 0.0.0.0:8080                0.0.0.0:*             
    LISTEN      18684/varnishd     
tcp        0      0 127.0.0.1:2000              0.0.0.0:*             
    LISTEN      18683/varnishd     
其中8080为Varnish监听的端口,2000为Varnish基于telnet的管理端口。

停止Varnish,使用如下命令
# killall varnishd
 
六、Varnish的二进制程序文件
在安装Varnish后,会生成许多二进制程序文件,其中常见的命令有:
/usr/local/varnish/sbin/varnishd:这种Varnish的启动命令,最重要
/usr/local/varnish/bin/varnishadm:可用来控制管理Varnish实例的。如删除缓存对象
/usr/local/varnish/bin/varnishlog:显示Varnish的日志信息
/usr/local/varnish/bin/varnishncsa:这个命令也可以显示Varnish的日志信息,只不过这个命令显示的日志信息的格式有点类似于apache的combine格式输出的日志。
/usr/local/varnish/bin/varnishstat:显示Varnish的缓存信息
 
七、varnishd指令
varnishd的启动命令是/usr/local/varnishd/sbin/varnisd命令,这个命令有众多参数,可以使用/usr/local/varnish/sbin/varnishd
–h来查看相关参数的详细信息。其中常用的参数有:
-a address:port:指定Varnish监听的套接字
-b address:port:指定后端服务器地址及其监听端口
-d:表示debug调试模式
-f file:指定Varnish的配置文件
-P file:指定Varnish的pid文件
-p param=value:指定服务器参数,用来优化Varnish性能的
-n dir:指定Varnish的工作目录
-s
kind[,storageoptions]:指定Varnish后端存储的方式。常用的后端存储方式有:
        -s malloc,-s
file,<dir_or_file>,<size>。注意在32位的操作系统下,Varnish最大仅支持2G的容量存储。
-t:指定缺省的ttl值
-T address:port:设定Varnish基于telnet的管理地址及其端口
-V:指定Varnish的版本号
-w
int[,int[,int]]:指定Varnish的工作线程数。其配置方式有如下几种:
                  -w <fixed_count>
        -w min,max
        -w min,max,timeout [default: -w2,500,300]

八、Varnish是如何记录数据的?
Varnish一个比较显著的特点就是它如何记录数据的,varnish将所有的数据全部记录到内存当中,当内存全部使用以后,又从头开始记录,覆盖最旧的记录。因此,这样就可以很快的记录数据,而且也不占用磁盘空间。不过,一旦服务器宕机的话,则内存中所有的数据都会被释放。
 
九、varnishlog指令
Varnish提供了众多的工具来查看内存中的数据,在这里我只说varnishlog的应用
在命令行上执行varnishlog命令,显示结果如下:
  17 RxHeader    c Accept-Encoding: gzip, deflate
  17 RxHeader    c Host: 192.168.108.202:8080
  17 RxHeader    c Connection: Keep-Alive
  17 VCL_call    c recv
  17 VCL_return  c lookup
  17 VCL_call    c hash
  17 VCL_return  c hash
其中第一列是任意的数,它用来定义请求,相同的号码代表相同的HTTP传输。
第二列是信息标记,所有的日志都带有一个标记(tag),标记对应相对的操作。Rx表示varnish收到数据,Tx表示varnish发送数据。
第三列代表数据是从哪里传出或者传入的,是从c(client)还是b(backend)。
第四列是被记录的数据。
Varnishlog还有许多子选项:
-b:只显示varnish和backend
server之间的日志,当您想要优化命中率的时候可以使用这个参数。
-c:和-b差不多,不过它代表的是varnish和client端的通信。
-i tag:只显示某个tag相关的信息,比如“varnishlog
–iSessionOpen”将只显示新会话,注意,这个地方的tag名字是不区分大小写的。
-I:通过正则表达式过滤数据,比如“varnishlog -c -i RxHeader -I
Cookie”将显示所有接到来自客户端的包含Cookie单词的头信息。

十、varnishstat指令
varnishstat的二进制程序是/usr/local/varnish/bin/varnishstat。缓存命中率的高低直接说明了varnish的运行状态和效果,较高的缓存命中率说明了varnish运行状态良好,web服务器的性能也会提高很多,反之,过低的缓存命中率说明varnish的配置可能存在问题,那么就需要进行调整,因此,从整体上了解varnish的命中率和缓存状态,对于优化和调整varnish至关重要。
使用/usr/local/varnish/bin/varnishstat命令可以查看Varnish的缓存状态信息。如:
# /usr/local/varnish/bin/varnishstat
Hitrate ratio:        1        1        1
Hitrate avg:    0.5294  0.5294  0.5294
 
          18        0.00        0.01 Client connections accepted
          17        0.00        0.01 Client requests received
          9        0.00        0.00 Cache hits
          8        0.00        0.00 Cache misses
          8        0.00        0.00 Backend conn. success
          8        0.00        0.00 Fetch with Length
          11          .            .  N struct sess_mem
          1          .            .  N struct objectcore
          1          .            .  N struct objecthead
          1          .            .  N struct smf
          1          .            .  N large free smf
          10          .            .  N worker threads
          10        0.00        0.00 N worker threads created
          1          .            .  N backends
          8          .            .  N expired objects
          8          .            .  N LRU moved objects
          10        0.00        0.00 Objects sent with write
          18        0.00        0.01 Total Sessions
          17        0.00        0.01 Total Requests
 
其中比较重要的参数有:
Client connections accepted:表示接受的连接数
Client requests
received:表示接受的请求总数,如果使用了长连接,那么该值一般大于Client
connections accepted值
Cache hits:表示命中的次数
Cache misses:表示非命中的次数
N struct objectcore:表示被缓存对象的数量
N expired objects:表示过期的缓存对象数量
N LRU moved objects:表示被淘汰的缓存对象数量

缓存服务器Varnish概念篇

缓存服务器Varnish概念篇

Varnish Cache 的架构笔记

CentOS 5.8下Varnish-2.1.5的安装配置

RedHat脚本改用CentOS源更新安装Nginx、PHP 5.3、Varnish

利用Varnish构建Cache服务器笔记

缓存服务Varnish安装配置

Varnish 编译安装所需准备

Linux下Varnish缓存的配置优化

Varnish 的详细介绍:请点这里
Varnish 的下载地址:请点这里

本文永久更新链接地址:

Varnish
一、varnish简介
Varnish是一款高性能的开源HTTP加速器,它比squid还稳定,且效率更高,资源占用更少…

Varnish
一、varnish简介
Varnish是一款高性能的开源HTTP加速器,它比squid还稳定,且效率更高,资源占用更少。相信在反向代理,web加速方面,varnish已经有足够能力代替squid。挪威最大的在线报纸
Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好。
 
二、Varnish的结构与特点
Varnish是一个轻量级的Cache和反向代理软件,先进的设计理念和成熟的设计框架是Varnish的主要特点,现在的Varnish总共代码量不大,功能上虽然在不断改进,但是还需要继续丰富和加强。下面总结了Varnish的一些特点:
(1)是基于内存缓存,重启后数据将消失。
(2)利用虚拟内存方式,io性能好。
(3)支持设置0~60秒内的精确缓存时间。
(4)VCL配置管理比较灵活。
(5)32位机器上缓存文件大小为最大2G。
(6)具有强大的管理功能,例如top,stat,admin,list等。
(7)状态机设计巧妙,结构清晰。
(8)利用二叉堆管理缓存文件,达到积极删除目的。

Varnish

Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang
使用3台Varnish代替了原来的12台Squid,性能比以前更好

Varnish 的作者Poul-Henning
Kamp是FreeBSD的内核开发者之一,他认为现在的计算机比起1975年已经复杂许多。在1975年时,储存媒介只有两种:内存与硬盘。但现在计算
机系统的内存除了主存外,还包括了cpu内的L1、L2,甚至有L3快取。硬盘上也有自己的快取装置,因此squid
cache自行处理物件替换的架构不可能得知这些情况而做到最佳化,但操作系统可以得知这些情况,所以这部份的工作应该交给操作系统处理,这就是
Varnish cache设计架构。

二、配置Varnish 1、VCL使用说明
VCL,即为Varnish Configuation
Language,用来定义varnish的存取策略,VCL语法比较简单,跟C和perl比较相似,可以使用指定运算符“=”,比较运算符“==”,逻
辑运算符“!,&&,!!”等形式。还支持正则表达样和用“~”进行ACL匹配运算,同时还可以使用“set”这样的关键字来指定变量。
需要注意的是,“\”字符在VCL里没有特别的含义,这点与其它语言略有不同,另外,VCL只是配置,并不是真正的编程语言,没有循环,也没有自定义变量。 
在讲述Varnish配置之前,首先需要了解下varnish的配置语法,即VCL,下面对VCL常用的一些内置函数和公用变量进行详细介绍。
VCL内置函数 1)vcl_recv函数
用于接收和处理请求,当请求到达并成功接收后被调用,通过判断请求的数据来决定如何处理请求。
此函数一般以如下几个关键字结束:
  pass:表示进入pass模式,把请求控制权交给vcl_pass函数。
  pipe:表示进入pipe模式,把请求控制权交给vcl_pipe函数。
  error code
[reason]:表示返回“code”给客户端,并放弃处理该请求,“code”是错误标识,例如200、405等,“reason”是错误提示信息。
2)vcl_pipe函数
此函数在进入pipe模式时被调用,用于将请求直接传递至后端主机,在请求和返回的内容没有改变的情况下,将不变的内容返回给客户端,直到这个链接关闭。
此函数一般以如下几个关键字结束:
error code [reason]
pipe
3)vcl_pass函数
此函数在进入pass模式时被调用,用于将请求直接传递至后端主机,后端主机应答数据后送给客户端,但不进行任何缓存,在当前连接下每次都返回最新的内容。
此函数一般以如下几个关键字结束:
error code [reason]
pass
4)lookup
表示在缓存里查找被请求的对象,并且根据查找的结果把控制权交给函数vcl_hit或者函数vcl_miss。
5)vcl_hit函数
在执行lookup指令后,如果在缓存中找到请求的内容,将自动调用该函数。
此函数一般以如下几个关键字结束:
deliver:表示将找到的内容发送给客户端,并把控制权交给函数vcl_deliver。
error code [reason]
pass
6)vcl_miss函数
在执行lookup指令后,如果没有在缓存中找到请求的内容时自动调用该方法,此函数可以用于判断是否需要从后端服务器取内容。
此函数一般以如下几个关键字结束:
fetch:表示从后端获取请求的内容,并把控制权交给vcl_fetch函数。
error code [reason]
pass
7)vcl_fetch函数
在从后端主机更新缓存并且获取内容后调用该方法,接着,通过判断获取的内容来决定是否将内容放入缓存,还是直接返回给客户端。
此函数一般以如下几个关键字结束:
error code [reason]
pass
deliver
8)vcl_deliver函数
在缓存中找到请求的内容后,发送给客户端前调用此方法。此函数一般以如下几个关键字结束:
  error code [reason]
  deliver
9)vcl_timeout 函数
此函数在缓存内容到期前调用。一般以如下几个关键字结束:
  discard:表示从缓存中清除该内容。
  fetch
10)vcl_discard函数
在缓存内容到期后或缓存空间不够时,自动调用该方法,一般以如下几个关键字结束:
  keep:表示将内容继续保留在缓存中。
  discard
 

三、varnish的系统架构
varnish主要运行两个进程:Management进程和Child进程(也叫Cache进程)。
 
Management进程主要实现应用新的配置、编译VCL、监控varnish、初始化varnish以及提供一个命令行接口等。Management进程会每隔几秒钟探测一下Child进程以判断其是否正常运行,如果在指定的时长内未得到Child进程的回应,Management将会重启此Child进程。
 
Child进程包含多种类型的线程,常见的如:
cache-main线程:全局只有一个,用于启动cache;
acceptor线程:接收新的连接请求并响应;
worker线程:child进程会为每个会话启动一个worker线程,因此,在高并发的场景中可能会出现数百个worker线程甚至更多;
expiry线程:从缓存中清理过期内容;
backend poll线程:每个后端服务器一个,用于检测后端服务器的健康状况;
epoll/kqueue线程:数量可配置,默认为2,用于管理线程池
 
在配置varnish时,一般只需为关注cache-worker线程,而且也只能配置其线程池的数量,而除此之外的其它均非可配置参数。与此同时,线程池的数量也只能在流量较大的场景下才需要增加,而且经验表明其多于2个对提升性能并无益处。

常用的命令

varnishadm ban.url .*$         #清除所有
varnishadm ban.url /index.html  #清除 index.html 页面缓存
varnishadm ban.url /admin/$    #清除 admin 目录缓存

图片 1

Varnish的安装非常简单,下面逐步介绍: 1、安装前的准备
Varnish安装环境如下表1所示: 表1 主机名 操作系统 IP地址
Varnish-…

四、Varnish的安装
由于我使用的系统为RHEL5.8
,因此在安装varnish之前,需要安装如下软件包:
automake,autoconf,libtool,ncurses-devel,libxslt,groff,pcre-devel,pkgconfig
# yum -y install *.rpm
 
编译安装varnish
# tar xf varnish-2.1.3.tar.gz
# cd varnish-2.1.3
# ./configure –prefix=/usr/loca/varnish
 

部署varnish

Varnish与一般服务器软件类似,分为master(management)进程和child(worker,主要做cache的工作)进程。master进程读入命令,进行一些初始化,然后fork并监控child进程。child进程分配若干线程进行工作,主要包括一些管理线程和很多woker线程。

# make  && make install

1.server1下载安装 yum install *
varnish-libs-3.0.5-1.el6.x86_64.rpm 
varnish-3.0.5-1.el6.x86_64.rpm

针对文件缓存部分,master读入存储配置(-s
file[,path[,size[,granularity]]]
),调用合适的存储类型,然后创建/读入相应大小的缓存大文件。接着,master初始化管理该存储空间的结构体。这些变量都是全局变量,在fork以后会被child进程所继承(包括文件描述符)。

为varnish提供配置文件
将varnish的默认配置文件复制成为/etc/sysconfig/varnish
# cp /usr/local/varnish/etc/varnish/default.vcl 
/etc/sysconfig/varnish
 
创建Varnish用户和Varnish的工作目录
# useradd –s /sbin/nologin varnish
#mkdir  /web/cache
#chown –R varnish:varnish /web/cache

2.server1(部署varnish的主机上)
vim /etc/sysconfig/varnish
/etc/varnish/default.vcl
/etc/init.d/varnish start

在child进程主线程初始化过程中,将前面打开的存储大文件整个mmap到内存中(如果超出系统的虚拟内存,mmap失败,进程会减少原来的配置mmap大小,然后继续mmap),此时创建并初始化空闲存储结构体,挂到存储管理结构体,以待分配。

在varnish
2.0版本中,启动varnish之前首先需要为varnish指定后端服务器地址,因此,我们需要编辑varnish的配置文件,指定后端服务器地址。
# vim  /etc/sysconfig/varnish
添加如下信息即可:
backend default {
    .host = “127.0.0.1”;
    .port = “80”;
}
 
五、varnish的启动和停止
# /usr/local/varnish/sbin/varnishd -f /etc/sysconfig/varnish -s
malloc,200M -T 127.0.0.1:2000 -a 0.0.0.0:8080
-f:指定varnish的配置文件
-s:指定varnish的存储类型和存储容量
-T:指定一个基于本文的管理接口,可用于在不停止varnish的情况下来管理varnish
-a:指定监听的套接字
 
查看varnish是否启动成功
# netstat -tunlp | grep varnish
tcp        0      0 0.0.0.0:8080                0.0.0.0:*             
    LISTEN      18684/varnishd     
tcp        0      0 127.0.0.1:2000              0.0.0.0:*             
    LISTEN      18683/varnishd     
其中8080为Varnish监听的端口,2000为Varnish基于telnet的管理端口。

3.server2

搭建后台的httpd服务

vim /var/www/html/index.html

接着,真正的工作开始,Varnish的某个负责接受新HTTP连接的线程开始等待用户,如果有新的HTTP连接过来,它总负责接收,然后叫醒某个等待中的线程,并把具体的处理过程交给它。Worker线程读入HTTP请求的URI,查找已有的object,如果命中则直接返回并回复用户。如果没有命中,则需要将所请求的内容,从后端服务器中取过来,存到缓存中,然后再回复。

停止Varnish,使用如下命令
# killall varnishd
 
六、Varnish的二进制程序文件
在安装Varnish后,会生成许多二进制程序文件,其中常见的命令有:
/usr/local/varnish/sbin/varnishd:这种Varnish的启动命令,最重要
/usr/local/varnish/bin/varnishadm:可用来控制管理Varnish实例的。如删除缓存对象
/usr/local/varnish/bin/varnishlog:显示Varnish的日志信息
/usr/local/varnish/bin/varnishncsa:这个命令也可以显示Varnish的日志信息,只不过这个命令显示的日志信息的格式有点类似于apache的combine格式输出的日志。
/usr/local/varnish/bin/varnishstat:显示Varnish的缓存信息
 
七、varnishd指令
varnishd的启动命令是/usr/local/varnishd/sbin/varnisd命令,这个命令有众多参数,可以使用/usr/local/varnish/sbin/varnishd
–h来查看相关参数的详细信息。其中常用的参数有:
-a address:port:指定Varnish监听的套接字
-b address:port:指定后端服务器地址及其监听端口
-d:表示debug调试模式
-f file:指定Varnish的配置文件
-P file:指定Varnish的pid文件
-p param=value:指定服务器参数,用来优化Varnish性能的
-n dir:指定Varnish的工作目录
-s
kind[,storageoptions]:指定Varnish后端存储的方式。常用的后端存储方式有:
        -s malloc,-s
file,<dir_or_file>,<size>。注意在32位的操作系统下,Varnish最大仅支持2G的容量存储。
-t:指定缺省的ttl值
-T address:port:设定Varnish基于telnet的管理地址及其端口
-V:指定Varnish的版本号
-w
int[,int[,int]]:指定Varnish的工作线程数。其配置方式有如下几种:
                  -w <fixed_count>
        -w min,max
        -w min,max,timeout [default: -w2,500,300]

分配缓存的过程是这样的:它根据所读到object的大小,创建相应大小的缓存文件。为了读写方便,程序会把每个object的大小变为最接近其大小的内存页面倍数。然后从现有的空闲存储结构体中查找,找到最合适的大小的空闲存储块,分配给它。如果空闲块没有用完,就把多余的内存另外组成一个空闲存储块,挂到管理结构体上。如果缓存已满,就根据LRU机制,把最旧的object释放掉。

八、Varnish是如何记录数据的?
Varnish一个比较显著的特点就是它如何记录数据的,varnish将所有的数据全部记录到内存当中,当内存全部使用以后,又从头开始记录,覆盖最旧的记录。因此,这样就可以很快的记录数据,而且也不占用磁盘空间。不过,一旦服务器宕机的话,则内存中所有的数据都会被释放。
 
九、varnishlog指令
Varnish提供了众多的工具来查看内存中的数据,在这里我只说varnishlog的应用
在命令行上执行varnishlog命令,显示结果如下:
  17 RxHeader    c Accept-Encoding: gzip, deflate
  17 RxHeader    c Host: 192.168.108.202:8080
  17 RxHeader    c Connection: Keep-Alive
  17 VCL_call    c recv
  17 VCL_return  c lookup
  17 VCL_call    c hash
  17 VCL_return  c hash
其中第一列是任意的数,它用来定义请求,相同的号码代表相同的HTTP传输。
第二列是信息标记,所有的日志都带有一个标记(tag),标记对应相对的操作。Rx表示varnish收到数据,Tx表示varnish发送数据。
第三列代表数据是从哪里传出或者传入的,是从c(client)还是b(backend)。
第四列是被记录的数据。
Varnishlog还有许多子选项:
-b:只显示varnish和backend
server之间的日志,当您想要优化命中率的时候可以使用这个参数。
-c:和-b差不多,不过它代表的是varnish和client端的通信。
-i tag:只显示某个tag相关的信息,比如“varnishlog
–iSessionOpen”将只显示新会话,注意,这个地方的tag名字是不区分大小写的。
-I:通过正则表达式过滤数据,比如“varnishlog -c -i RxHeader -I
Cookie”将显示所有接到来自客户端的包含Cookie单词的头信息。

释放缓存的过程是这样的:有一个超时线程,检测缓存中所有object的生存期,如果超初设定的TTL(Time
To
Live)没有被访问,就删除之,并且释放相应的结构体及存储内存。注意释放时会检查该存储内存块前面或后面的空闲内存块,如果前面或后面的空闲内存和该释放内存是连续的,就将它们合并成更大一块内存。

十、varnishstat指令
varnishstat的二进制程序是/usr/local/varnish/bin/varnishstat。缓存命中率的高低直接说明了varnish的运行状态和效果,较高的缓存命中率说明了varnish运行状态良好,web服务器的性能也会提高很多,反之,过低的缓存命中率说明varnish的配置可能存在问题,那么就需要进行调整,因此,从整体上了解varnish的命中率和缓存状态,对于优化和调整varnish至关重要。
使用/usr/local/varnish/bin/varnishstat命令可以查看Varnish的缓存状态信息。如:
# /usr/local/varnish/bin/varnishstat
Hitrate ratio:        1        1        1
Hitrate avg:    0.5294  0.5294  0.5294
 
          18        0.00        0.01 Client connections accepted
          17        0.00        0.01 Client requests received
          9        0.00        0.00 Cache hits
          8        0.00        0.00 Cache misses
          8        0.00        0.00 Backend conn. success
          8        0.00        0.00 Fetch with Length
          11          .            .  N struct sess_mem
          1          .            .  N struct objectcore
          1          .            .  N struct objecthead
          1          .            .  N struct smf
          1          .            .  N large free smf
          10          .            .  N worker threads
          10        0.00        0.00 N worker threads created
          1          .            .  N backends
          8          .            .  N expired objects
          8          .            .  N LRU moved objects
          10        0.00        0.00 Objects sent with write
          18        0.00        0.01 Total Sessions
          17        0.00        0.01 Total Requests
 
其中比较重要的参数有:
Client connections accepted:表示接受的连接数
Client requests
received:表示接受的请求总数,如果使用了长连接,那么该值一般大于Client
connections accepted值
Cache hits:表示命中的次数
Cache misses:表示非命中的次数
N struct objectcore:表示被缓存对象的数量
N expired objects:表示过期的缓存对象数量
N LRU moved objects:表示被淘汰的缓存对象数量

整个文件缓存的管理,没有考虑文件与内存的关系,实际上是将所有的object都考虑是在内存中,如果系统内存不足,系统会自动将其换到swap空间,而不需要varnish程序去控制。

缓存服务器Varnish概念篇
http://www.linuxidc.com/Linux/2014-05/101389.htm

相关阅读

缓存服务器Varnish概念篇
http://www.linuxidc.com/Linux/2014-05/101389.htm

Varnish权威指南(中文) PDF 
http://www.linuxidc.com/Linux/2013-10/91021.htm

Varnish Cache 的架构笔记
http://www.linuxidc.com/Linux/2013-10/91016.htm

Varnish Cache 的架构笔记
http://www.linuxidc.com/Linux/2013-10/91016.htm

CentOS
5.8下Varnish-2.1.5的安装配置
http://www.linuxidc.com/Linux/2013-09/89916.htm

CentOS
5.8下Varnish-2.1.5的安装配置
http://www.linuxidc.com/Linux/2013-09/89916.htm

RedHat脚本改用CentOS源更新安装Nginx、PHP
5.3、Varnish
http://www.linuxidc.com/Linux/2012-07/65801.htm

RedHat脚本改用CentOS源更新安装Nginx、PHP
5.3、Varnish
http://www.linuxidc.com/Linux/2012-07/65801.htm

利用Varnish构建Cache服务器笔记
http://www.linuxidc.com/Linux/2012-07/65234.htm

利用Varnish构建Cache服务器笔记
http://www.linuxidc.com/Linux/2012-07/65234.htm

缓存服务Varnish安装配置
http://www.linuxidc.com/Linux/2012-07/65228.htm

缓存服务Varnish安装配置
http://www.linuxidc.com/Linux/2012-07/65228.htm

Varnish 编译安装所需准备
http://www.linuxidc.com/Linux/2012-07/65230.htm

Varnish 编译安装所需准备
http://www.linuxidc.com/Linux/2012-07/65230.htm

Linux下Varnish缓存的配置优化
http://www.linuxidc.com/Linux/2012-03/56435.htm

Linux下Varnish缓存的配置优化
http://www.linuxidc.com/Linux/2012-03/56435.htm

Varnish
的详细介绍
:请点这里
Varnish
的下载地址
:请点这里

图片 2

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-05/117752.htm

图片 3

相关文章