大瓦尼什图景

在这一部分中,我们将回答以下问题:-这个包装中有什么叫做“Varnish”?-所有不同的零件都有什么名字?-你需要一个六角扳手来组装吗?

Varnish的两个主要部分是 varnishd 程序。第一个过程被称为“管理者”,它的工作是与管理员您交谈,并实现您所要求的事情。

第二个进程称为“工人”或“孩子”,这是对您的HTTP流量执行所有实际工作的进程。

当您开始 varnishd ,启动管理器进程,一旦它处理完所有命令行标志,它将为您启动子进程。如果子进程终止,管理器将立即自动为您重新启动它。

这种分工的主要原因是安全性:管理器进程通常将以“根”权限运行,以便打开TCP套接字端口80,但作为一种防御措施,它以最低权限启动子进程。

管理器进程是交互式的,它提供了一个CLI--命令行界面,可以从脚本或程序手动使用。CLI几乎完全控制了Varnish对您的HTTP流量的实际操作,我们竭尽全力确保您不需要重新启动Varnish进程,除非您需要更改一些非常基本的东西。

通过使用简单灵活的PSK--预共享密钥、访问控制方案,可以安全地远程访问CLI,因此可以轻松地将Varnish集成到您的运营和管理基础设施中,或将其绑定到您的CMS。

所有这些都在 启动和运行Varnish

子进程应该如何处理HTTP请求、缓存什么、删除哪些标头等都是使用一种称为VCL的小型编程语言来指定的--Varnish配置语言。管理器进程将编译VCL程序并检查其错误,

但是,对于传入的每个HTTP请求,它是运行VCL程序的子进程。

因为VCL被编译成C代码,而C代码又被编译成机器指令,所以即使是非常复杂的VCL程序也能在几微秒内执行,根本不会影响性能。

如果您不是真正的程序员,请不要担心,使用VCL做简单的事情非常简单::

sub vcl_recv {
        # Remove the cookie header to enable caching
        unset req.http.cookie;
}

CLI界面允许您随时编译和加载新的VCL程序,并且您可以在加载的VCL程序之间即时切换,而不重新启动子进程,也不会错过任何一个HTTP请求。

VCL代码可以使用称为VMOD的外部模块进行扩展,如果您勇敢的话,甚至可以通过内联C代码进行扩展,因此,就Varnish可以为您的HTTP流量做什么而言,确实没有限制。

VCL-Varnish配置语言 详细描述了VCL及其功能。

Varnish使用一段共享内存来报告和记录其活动和状态。对于每个HTTP请求,许多非常详细的记录将被附加到日志内存段。其他进程可以订阅日志记录、对其进行筛选并对其进行格式化,例如将其格式化为Apache/NCSA样式的日志记录。

共享内存中的另一个段用于统计计数器,这允许实时、精确到微秒级的缓存命中率、资源使用和特定性能指示指标的监控。

Varnish附带了许多工具,可以从共享内存进行报告, varnishlogvarnishstatsvarnishncsa 等,并使用API库,以便您可以编写自己的工具,如果您需要的话。

报告和统计 解释了这一切是如何运作的。

你对Varnish感兴趣的原因大概是你想让你的网站运行得更好。对网站进行性能调优有很多方面,从关于缓存内容的相对简单的策略决策,到使用ESI和自动故障转移设计地理位置不同的多级CDN。

Varnish和网站性能 将带您了解Varnish提供的各种可能性和设施。

最后,这里必须提到墨菲定律:事情会出错,而且更有可能的是,他们会在零点-零点-黑点发生这种情况。最有可能的是在飓风期间,你的手机电池没电了,你的妻子准备了一个亲密的夜晚来庆祝你们的周年纪念日。

是的,我们都经历过,不是吗?

当事情出错的时候 Varnish故障排除 希望能有所帮助。