Varnish是一个轻量级的Cache和反向代理软件,先进的设计理念和成熟的设计框架是Varnish的主要特点,现在的Varnish总共代码量不大,功能上虽然在不断改进,但是还需要继续丰富和加强。下面总结了Varnish的一些特点:
(1)是基于内存缓存,重启后数据将消失。
(2)利用虚拟内存方式,io性能好。
(3)支持设置0~60秒内的精确缓存时间。
(4)VCL配置管理比较灵活。
(5)32位机器上缓存文件大小为最大2G。
(6)具有强大的管理功能,例如top,stat,admin,list等。
(7)状态机设计巧妙,结构清晰。
(8)利用二叉堆管理缓存文件,达到积极删除目的。

Varnish的Storage方式可分为两种:
1)Malloc 通过malloc获取内存。
2)Mmap file 创建大文件,通过二分法分段映射成1G以内的大块。

Varnish进程的工作模式:
varnish启动或有2个进程 master(management)进程和child(worker)进程。master读入存储配置命令,进行初始化,然后fork,监控child。child则分配线程进行cache工作,child还会做管理线程和生成很多worker线程。
child进程主线程初始化过程中,将存储大文件整个加载到内存中,如果该文件超出系统的虚拟内存,则会减少原来配置mmap大小,然后继续加载,这时候创建并初始化空闲存储结构体,放在存储管理的struct中,等待分配。
接着varnish某个负责接口新http连接的线程开始等待用户,如果有新的http连接,但是这个线程只负责接收,然后唤醒等待线程池中的work线程,进行请求处理。
worker线程读入uri后,将会查找已有的object,命中直接返回,没有命中,则会从后端服务器中取出来,放到缓存中。如果缓存已满,会根据LRU算法,释放旧的object。对于释放缓存,有一个超时线程会检测缓存中所有object的生命周期,如果缓存过期(ttl),则删除,释放相应的存储内存。

Varnish的实际压力测试:
硬件环境

PowerEdge R610
硬件环境 CPU Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
内存 12G
硬盘 单盘raid0(150G * 3块)

软件环境

OS版本 centos5.4
Kernal 2.6.18-164.el5
varnishd 2.1.5

测试工具:
消减网络频宽/吞吐量,在相同服务器上生成负载,使用Apache Bench工具(修改后的ab)模仿线上访问,将百万的url请求以顺序的方式读取,然后用2台服务器启动多个ab一次产生的请求500个请求循环N次请求到varnish服务器。 (更多…)

六月 14th, 2012

Posted In: 网络技术

无觅相关文章插件,快速提升流量