王朝百科
分享
 
 
 

Varnish

王朝百科·作者佚名  2010-03-11  
宽屏版  字体: |||超大  

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

Varnish

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

龙铳让刃:Varnish的理念是好的,但是Varnish还没有稳定到可以完全替代Squid的程度,现在就抛弃Squid选择Varnish是不明智的。

Varnish介绍

1 Varnish is HTTP accelerator.

2 Varnish stores data in virtual memory and leaves the task of deciding what is stored in memory

and what gets paged out to disk to the operating system

3 The Varnish web site claims that Varnish is ten to twenty times faster than the popular Squid

cache on the same hardware.

4 Varnish is heavily threaded

varnish 总体架构

2.1 总体流程

主进程 fork 子进程,主进程等待子进程的信号,子进程退出后,主进程重新启动子进程

子进程生成若干线程。

Accept 线程:接受请求,将请求挂在 overflow对列上

Work 线程: 多个,从对列上摘除请求,对请求进行处理,直到完成,然后处理下一个

请求

Epoll 线程: 一个请求处理称作一个 sesion,在 sesion 周期内,处理完请求后,会交给

Epoll 处理,监听是否还有事件发生。

Expire 线程:对于缓存的对象,根据过期时间,组织成二叉堆,该线程周期检查该堆的

根,处理过期的文件。

线程之间的关系:

2.1.1 accept 线程

监听端口,接受连接。

接受后组织成 struct ses(session 结构) ,看是否有空闲的工作线程,如果有,将请求给它,

pthread_cond_signal 信号通知它没有空闲线程,如果 overflow过大,则放弃该请求。否则,

将其挂在 overflow 上(需要更多工作线程,发通知)。

继续监听 2.1.2 work 线程

从 overflow队列上摘取请求(struct ses),进入状态机处理,处理结束后,通过 pipe通信,

将 struct ses发送给 epoll 线程。

2.1.3 Epoll 线程,得到传过来的 struct ses,若还没有过期,将 socket 放入 epoll 的事件中,事

件发生时,也会将其放入到 overflow中进行。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格​十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有