介绍varnish的工作流程,安装以及varnish的配置

本文将详细介绍 varnish 的">工作流程、安装、配置三个方面。相信阅读完本文,读者能熟练掌握 varnish。

Varnish 简介

Varnish 是一款高性能且开源的反向代理服务器和 HTTP 加速器,其采用全新的软件体系机构,和现在的硬件体系紧密配合,与传统的 squid 相比,varnish 具有性能更高、速度更快、管理更加方便等诸多优点,很多大型的网站都开始尝试使用 varnish 来替换 squid,这些都促进 varnish 迅速发展起来。

挪威的最大的在线报纸 Verdens Gang(vg.no) 使用 3 台 Varnish 代替了原来的 12 台 Squid,性能比以前更好,这是 Varnish 最成功的应用案例。

Varnish 文件缓存的工作流程

Varnish 与一般服务器软件类似,分为 master 进程和 child 进程。Master 进程读入存储配置文件,调用合适的存储类型,然后创建 / 读入相应大小的缓存文件,接着 master 初始化管理该存储空间的结构体,然后 fork 并监控 child 进程。Child 进程在主线程的初始化的过程中,将前面打开的存储文件整个 mmap 到内存中,此时创建并初始化空闲结构体,挂到存储管理结构体,以待分配。Child 进程分配若干线程进行工作,主要包括一些管理线程和很多 worker 线程。

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

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

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

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

Varnish 安装

下载 varnish 安装包

建议下载最新稳定版本(现在最新 varnish 版本为 3.0.2),varnish 提供源代码安装包和可执行程序安装包,按照您的习惯下载适合您平台的任一安装包即可。

安装 varnish

源代码安装包安装

首先安装 pcre 库,pcre 库是为兼容正则表达式,如果不安装,在安装 varnish2.0 版本以上时,会提示找不到 pcre 库。以下是 pcre 的安装过程,其代码如清单 1 所示:

清单 1. pcre 库安装代码

tar zxvf pcre.tar.gz cd pcre/ ./configure --prefix=/usr/local/pcre/ Make && make install

安装 varnish,其代码如清单 2 所示:

清单 2. varnish 安装代码

tar xzvf varnish-3.0.2.tar.gz cd varnish-3.0.2 export PKG_CONFIG_PATH =/usr/local/pcre/lib/pkgconfig ./configure --prefix=/usr/local/varnish make make install

可执行程序安装包安装清单 3. varnish 安装代码

rpm -i varnish-2.1.4-2.el5.x86_64.rpm

RedHat 系统环境下的安装 varnish,您需要安装以下软件:automake、autoconf、libtool、ncurses-devel、libxslt、groff、pcre-devel、pkgconfig,然后进行 varnish 的安装,安装代码如清单 3 所示:

启动 varnish

清单 4. varnish 启动代码

varnishd -f /etc/varnish/default.vcl -s file,/var/varnish_cache,1G \ -T 127.0.0.1:2000 -a 0.0.0.0:9082

各参数的含义如下:

-f 指定 varnish 的配置文件位置

-s 指定 varnish 缓存存放的方式,常用的方式有:“-s file,<dir_or_file>,<size>”。

-T address:port 设定 varnish 的 telnet 管理地址及其端口

-a address:port 表示 varnish 对 http 的监听地址及其端口

时间: 2024-09-30 21:39:16

介绍varnish的工作流程,安装以及varnish的配置的相关文章

Linux下Varnish缓存服务器的安装与配置

  Varnish是一款高性能且开源的反向代理服务器和http加速器.与传统的Squid相比,Varnish具有性能更高.速度更快.管理更方便等诸多优点.作者Poul-Henning Kamp是FreeBSD的内核开发者之一.Varnish采用全新的软件体系架构,和现在的硬件提交配合紧密.在1975年时,储存媒介只有两种:内存与硬盘.但现在计算 机系统的内存除了主存外,还包括了cpu内的L1.L2,甚至有L3快取.硬盘上也有自己的快取装置,因此squid cache自行处理物件替换的架构不可能得

Git 教程之工作流程详解_相关技巧

Git 工作流程 本章节我们将为大家介绍 Git 的工作流程. 一般工作流程如下: 1.克隆 Git 资源作为工作目录. 2.在克隆的资源上添加或修改文件. 3.如果其他人修改了,你可以更新资源. 4.在提交前查看修改. 5.提交修改. 6.在修改完成后,如果发现错误,可以撤回提交并再次修改并提交. 下图展示了 Git 的工作流程:

【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流

找到一篇很详细的Git教程,真的很不错,推荐!!! GitHub操作总结 : 总结看不明白就看下面的详细讲解. . 作者 :万境绝尘  . GitHub操作流程 : 第一次提交 :   方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样; -- 初始化git仓库 :git init ; -- 提交改变到缓存 :git commit -m 'description' ; -- 本地git仓库关联GitHub仓库 : git remote add origin git@g

利用 WSH 作定时工作流程

定时 一个很常见的 ASP 问题 : "如何定时工作流程执行网页?", 之所以会问这个问题大部分是因为管理员可能会利用一个 ASP 网页来作数据库维护的动作, 如备份...等, 在 Windows NT 平台有一个方法可以做工作流程, 那就是 AT 指令 + Schedule 服务, 但很可惜的是你并没有法度在命令列 (Command-Line) 执行 ASP 网页 当然你可以在命令列执行 IE 并告诉它要求执行的网页, 例如: c:\program files\internet ex

分享用户研究工作流程:用户理解方法和经验

文章描述:如何了解我们的用户:无线终端用户理解工作方法分享. 一. 前言 来到腾讯以后,做过iPhone阅读器.iPad阅读器.iPad音乐播放器的用户理解,目前正在做iPhone QZone的用户理解工作.做得次数多了,方法在不断改进,也积累了一些经验,与大家一起分享,希望帮助我们更了解用户. 首先介绍一下目前北分wsd(无线研发部用户体验组)用户研究工作流程:我们的用研需求来自项目组和用研组需求池,为控制节奏和质量,对承接项目组需求的工作流程进行严格把控,我们针对项目组需求,制定了用研工作流

交互设计师的工作流程及不同阶段的职责

  交互设计师的工作,并不仅仅是输出设计方案,我们需要参与前期的需求讨论.后期开发.测试验收等等产品设计与实现的多个环节.本篇将介绍我目前参与交互设计的工作流程以及各个阶段的工作职责. 一.需求分析阶段 这个阶段,对于不同时期的产品讨论.分析的方面侧重点不同. 1.新产品 对于从无到有的心产品,需要了解: 产品的定位是什么? 用户群体是谁?他们有哪些特征?我们的产品需要解决用户的什么痛点?如果有竞品,我们与他们的优势在哪里.差异又在哪里? 这个阶段非常重要,但是也是最难讨论清楚的,即使是产品经理

10 款简化工作流程的运营工具

  520表白日:想要做个好运营,不会撩妹怎么行? 一年一度的520表白日来了,这一天不向男神/女神表白,恐怕又要苦逼单身一年了.没有一点特别的撩妹神技怎能顺利脱单? 俗话说,直男撩妹,姿势不对.不如趁早补课,比如,用运营产品的方式撩妹.运营产品和撩妹在思路上没啥区别:首先找到你心仪的妹子(目标用户),获取她的基本信息(用户画像),了解她的喜好和需求(客户痛点),时刻关注妹子周围的动向(市场研究),潜入她的圈子形成影响力(社群营销),获取有用的信息(数据分析),做到妹子还没开口,就已经了解妹子的

Oozie工作流程定义详解

Oozie工作流程定义是一个DAG(Directed Acyclical Graphs)图,它由控制流节点(Control Flow Nodes)或动作节点(Action Nodes)组成,各个节点又是通过表征转移的箭线(transitions arrows)互相连通.对于工作流一般对应存在流程定义语言,例如jBPM是jPDL,大多数都是基于XML定义的,Oozie流程定义语言也是基于XML定义的,称为hPDL(Hadoop Process Definition Language). 下面,我们

《Photoshop Lightroom4 经典教程》—第1课1.4节Lightroom工作流程

1.4 Lightroom工作流程 Photoshop Lightroom4 经典教程 使用Lightroom的模块化界面可以轻松地管理工作流程中的每个阶段(从图像获取到最终输出). 导入:Lightroom工作流程起始于图库模块,在该模块中可以选择从硬盘或外部存储设备或者相机中获取图像,也可以从另一个应用程序导入照片,从视频中抓取图像,甚至可以绕过相机的存储卡将拍摄的照片直接传入Lightroom中. 组织:可以设置"导入"对话框中的选项,通过向影集添加关键字标记和其他元数据,向目录