标签:
本节将回答这个问题:“varnish”到底是什么,命名的点点滴滴。
varnish两个主要的部分是在varnisd项目中的两个进程。第一个进程被叫做“the manager”,主要功能是告诉你,系统管理员,发生了什么。
第二个进程被叫做“the worker”或者是“the child”,这个进程是实际处理你http请求的进程。
当你启动varnishd,manager进程启动,一旦manager处理完所有的命令行参数,child进程就开始启动了。如果child进程down掉,manager进程会重启child,自动的,无需干预。
这样设计的主要原因是为了安全考虑,manager为了能监听在80端口,以root运行,但是child进程只需要很小的权限。
manager进程是互动的,提供了CLI-命令行接口,可以手动,脚本以及程序调用。CLI提供Varnish处理HTTP请求的几乎全部控制,同时我们已经竭尽全力,以确保你不应该需要重新启动varnish,除非你需要修改最底层的东西。
CLI是远程访问安全的,使用简单灵活的PSK -- Pre Shared Key,所以很容易集成到你的业务或者绑定到你的CMS
所有的这些都包含在Starting and running Varnish 比如,子进程怎样处理http请求,缓存什么,哪个http头需要移除等等,都是用一个轻量级的变成语言,叫VCL--Varnish配置语言。manager进程将编译VCL程序同时检查是否出错,但是是child进程来运行VCL程序,在处理请求时。
因为VCL编译成C代码,C代码编译成机器指令,因此即便是复杂的VCL程序执行也是毫秒级的,不会对性能产生影响。 如果你不是一个真正的程序员,不要烦恼,VCL是很简单:
sub vcl_recv { # Remove the cookie header to enable caching unset req.http.cookie; }
CLI允许你随时编译和加载行的VCL程序,你也可以实时的转换两套程序,不需要重启child进程,同时不会丢失http请求。 VCL代码可以使用VMODs扩展模块来扩展,如果你可以甚至是C代码。因此varnish能对你的http请求做什么,真的是没有限制的。
VCL - Varnish Configuration Language 描绘了VCL以及它能详细的做什么 varnish使用共享内存分块的方式报告和记录实时状态。对于每个http请求,大量的详细的记录是追加到log的内存块。其他进程可以查看日志记录,过滤,以Apache/NCSA风格为例。 其他的内存块是用来统计计数的,实时的,精确到毫秒级的监控缓存,资源使用情况以及各项性能指标。 varnish有大量的工具可以使用共享内存,varnishlog,varnishstats,varnishncsa等等,你也可以使用API库编写你自己的工具,只要你需要。 Reporting and statistics 报告和统计 说明所有的工作原理。 对varnish感兴趣的最可能的原因,是你想让你的网站工作的更好。加速一个web站点是有很多方面的。一个简单的策略是使用缓存,设计物理分割的多等级的使用ESI的CDN缓存,宕机自动切换。 Varnish and Website Performance varnish和web站点的性能 最后,Murphys Law 应用:Things will go wrong, and more likely than not, they will do so at zero-zero-dark O‘clock. Most likely during a hurricane, when your phone battery is flat and your wife had prepared a intimate evening to celebrate your anniversary.体会下,事情总会出问题,也比不过,12点的黑暗,飓风的时候,你的妻子准备了一个温馨的晚餐来庆祝你们的纪念日,而你的手机没电了。。。。
标签:
原文地址:http://my.oschina.net/monkeyzhu/blog/412750