what is varnish & how to install varnish
2012-04-25 15:54
337 查看
什么是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项目是2006年发布的第一个版本0.9.距今已经四年多了,此文档之前也提过varnish还不稳定,那是2007年时候编写的,经过varnish开发团队和网友们的辛苦耕耘,现在的varnish已经很健壮。
很多门户网站已经部署了varnish,并且反应都很好,甚至反应比squid还稳定,且效率更高,资源占用更少。相信在反向代理,web加速方面,varnish已经有足够能力代替squid。
Varnish与Squid的对比
说到Varnish,就不能不提Squid。Squid是一个高性能的代理缓存服务器,它和Varnish相比较有诸多的异同点,下面进行分析。
下面是Varnish与Squid之间的相同点。
都是一个反向代理服务器。
都是开源软件。
下面是它们的不同点,也是Varnish的优点。
Varnish的稳定性很高。两者在完成相同负荷的工作时,Squid服务器发生故障的几率要高于Varnish,因为Squid需要经常重启。
Varnish访问速度更快。Varnish采用了“Visual Page Cache”技术,所有缓存数据都直接从内存读取,而Squid是从硬盘读取缓存数据,因此Varnish在访问速度方面会更快。
Varnish可以支持更多的并发连接。因为Varnish的TCP连接释放要比Squid快,所以在高并发连接情况下可以支持更多的TCP连接。
Varnish可以通过管理端口,使用正则表达式批量清除部分缓存,而Squid做不到。
当然,与传统的Squid相比,Varnish也有缺点。
Varnish在高并发状态下CPU、I/O和内存等资源开销都高于Squid。
Varnish进程一旦挂起、崩溃或者重启,缓存数据都会从内存中完全释放,此时所有请求都会被发送到后端服务器,在高并发情况下,这会给后端服务器造成很大压力
安装varnish
安装准备
查看是否安装以下依赖包
没有则安装
[root@localhost ~]# rpm -q automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig
automake-1.9.6-2.3.el5
autoconf-2.59-12
libtool-1.5.22-7.el5_4
ncurses-devel-5.5-24.20060715
ncurses-devel-5.5-24.20060715
libxslt-1.1.17-2.el5_2.2
libxslt-1.1.17-2.el5_2.2
groff-1.18.1.1-11.1
pcre-devel-6.6-6.el5_6.1
pcre-devel-6.6-6.el5_6.1
pkgconfig-0.21-2.el5
useradd -s /sbin/nologin varnish
mkdir -p /varnish/cache
mkdir -p /varnish/log
chown varnish:varnish /varnish/ -Rf
配置varnish
VCL处理流程,以及一些概念
图
receive状态,请求处理的入口状态,根据vcl规则判断该请求应该pass或pipe还是进入lookup状态
lookup状态,进入此状态后,会在hash表中查找数据,若找到,则进入hit状态,否则进入miss状态,
pass状态,进入后端请求,即进入fetch状态
fetch状态,在fetch状态下,对请求进行后端获取,发送请求,获得数据,进行本地存储
deliver状态,将获取到的数据发送给客户端,然后完成本次请求
本文出自 “风光坏家伙” 博客,转载请与作者联系!
Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好。
Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一,他认为现在的计算机比起1975年已经复杂许多。
在1975年时,储存媒介只有两种:内存与硬盘。但现在计算机系统的内存除了主存外,还包括了CPU内的L1、L2,甚至有L3快取。硬盘上也有自己的快取装置,
因此Squid Cache自行处理物件替换的架构不可能得知这些情况而做到最佳化,但操作系统可以得知这些情况,所以这部份的工作应该交给操作系统处理,这就是 Varnish cache设计架构。
varnish项目是2006年发布的第一个版本0.9.距今已经四年多了,此文档之前也提过varnish还不稳定,那是2007年时候编写的,经过varnish开发团队和网友们的辛苦耕耘,现在的varnish已经很健壮。
很多门户网站已经部署了varnish,并且反应都很好,甚至反应比squid还稳定,且效率更高,资源占用更少。相信在反向代理,web加速方面,varnish已经有足够能力代替squid。
Varnish与Squid的对比
说到Varnish,就不能不提Squid。Squid是一个高性能的代理缓存服务器,它和Varnish相比较有诸多的异同点,下面进行分析。
下面是Varnish与Squid之间的相同点。
都是一个反向代理服务器。
都是开源软件。
下面是它们的不同点,也是Varnish的优点。
Varnish的稳定性很高。两者在完成相同负荷的工作时,Squid服务器发生故障的几率要高于Varnish,因为Squid需要经常重启。
Varnish访问速度更快。Varnish采用了“Visual Page Cache”技术,所有缓存数据都直接从内存读取,而Squid是从硬盘读取缓存数据,因此Varnish在访问速度方面会更快。
Varnish可以支持更多的并发连接。因为Varnish的TCP连接释放要比Squid快,所以在高并发连接情况下可以支持更多的TCP连接。
Varnish可以通过管理端口,使用正则表达式批量清除部分缓存,而Squid做不到。
当然,与传统的Squid相比,Varnish也有缺点。
Varnish在高并发状态下CPU、I/O和内存等资源开销都高于Squid。
Varnish进程一旦挂起、崩溃或者重启,缓存数据都会从内存中完全释放,此时所有请求都会被发送到后端服务器,在高并发情况下,这会给后端服务器造成很大压力
安装varnish
安装准备
查看是否安装以下依赖包
没有则安装
[root@localhost ~]# rpm -q automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig
automake-1.9.6-2.3.el5
autoconf-2.59-12
libtool-1.5.22-7.el5_4
ncurses-devel-5.5-24.20060715
ncurses-devel-5.5-24.20060715
libxslt-1.1.17-2.el5_2.2
libxslt-1.1.17-2.el5_2.2
groff-1.18.1.1-11.1
pcre-devel-6.6-6.el5_6.1
pcre-devel-6.6-6.el5_6.1
pkgconfig-0.21-2.el5
useradd -s /sbin/nologin varnish
mkdir -p /varnish/cache
mkdir -p /varnish/log
chown varnish:varnish /varnish/ -Rf
配置varnish
VCL处理流程,以及一些概念
图
receive状态,请求处理的入口状态,根据vcl规则判断该请求应该pass或pipe还是进入lookup状态
lookup状态,进入此状态后,会在hash表中查找数据,若找到,则进入hit状态,否则进入miss状态,
pass状态,进入后端请求,即进入fetch状态
fetch状态,在fetch状态下,对请求进行后端获取,发送请求,获得数据,进行本地存储
deliver状态,将获取到的数据发送给客户端,然后完成本次请求
本文出自 “风光坏家伙” 博客,转载请与作者联系!
相关文章推荐
- What Is ADB And How To Install It With Android SDK
- What is UMASK and how to set UMASK in Linux/Unix?
- What is xylitol and how does it help to prevent cavities?
- What is reflection and how to use it in CSharp ?
- What is the PPA and How to do with it ?
- What is JNI Graphics and how to use it?
- WHAT IS ISO? A CAMERA’S SENSITIVITY TO LIGHT EXPLAINED, AND HOW TO USE IT
- What is a Flash Recovery Area and how to configure it ? (文档 ID 305648.1)
- SQL-Server collation, what is it and how to change db/column collation
- What is Favicon.ico and How to Create a Favicon Icon for Your Website?[zz]
- [quote] How to determine what target is given in Makefile from the make command-line?
- Sys.WebForms.PageRequestManagerParserErrorException - what it is and how to avoid it
- How to Monte Carlo Sampling Area Light and What physics quantity is the real percption?
- How to figure out what package something is in without resorting to Google
- What is EPOLL? Epoll vs Poll vs Select call ? And How to implement UDP server in Linux using EPOLL?
- What is XMLHTTP? How to use security zones in Internet Explorer
- Introduction to COM - What It Is and How to Use It.(ZT)
- What is "found.000" ? How to deal with it?
- What is SGID and how to set SGID in Linux?
- What is SPAWN concurrent program and how to write such program?