1. Varnish 全貌

在本节中,我们将回答以下问题:

  • 这个名为 "Varnish "的软件包里有什么?
  • 所有不同的部件名称是什么?
  • 组装时需要什么?

Varnish 的两个主要部分是 varnishd 程序中的两个进程。第一个进程叫做 “管理器”,它的工作是与管理员对话,实现您的要求。

第二个进程被称为 "工作进程 "或 “子进程”,它负责处理您的 HTTP 流量。

启动 varnishd 时,会启动管理器进程,一旦它处理完所有命令行标志,就会为你启动子进程。如果子进程死亡,管理器会立即自动为你重新启动它。

这种分工的主要原因是安全:管理器进程通常以 "root "权限运行,以便打开 TCP 80 端口,但作为一种防御措施,它会以最小权限启动子进程。

管理器进程是交互式的,它提供一个 CLI(命令行界面),可以通过脚本或程序手动使用。CLI几乎可以完全控制Varnish对HTTP流量的实际操作,而且我们已经尽了最大努力确保您无需重启Varnish进程,除非您需要更改一些非常基本的内容。

CLI可以通过简单灵活的PSK(预共享密钥)访问控制方案进行安全的远程访问,因此很容易将Varnish集成到您的运营和管理基础设施中,或将其与您的CMS绑定。

所有这些都将在启动和运行 Varnish 中介绍。

子进程应如何处理 HTTP 请求、缓存什么内容、删除哪些头文件等,都是通过一种名为 VCL(Varnish 配置语言)的小型编程语言来指定的。管理器进程将编译 VCL 程序并检查是否有错误、

但运行VCL程序的是子进程,它负责处理每一个HTTP请求。

由于 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 代码进行扩展。

VCL - Varnish 配置语言 详细介绍了 VCL 及其功能。

Varnish 使用一段共享内存来报告和记录其活动和状态。对于每个 HTTP 请求,都会有一些非常详细的记录附加到日志内存段。其他进程可以订阅日志记录,对其进行过滤和格式化,例如将其格式化为 Apache/NCSA 风格的日志记录。

共享内存中的另一部分用于统计计数器,可对缓存命中率、资源使用情况和特定性能指标进行实时监控,分辨率可达微秒级。

Varnish 自带了许多工具,可以从共享内存、varnishlog、varnishstats、varnishncsa 等中获取报告,还提供了一个 API 库,如果需要,你可以编写自己的工具。

报告和统计数据 解释了所有这些工具的工作原理。

您之所以对 Varnish 感兴趣,大概是希望您的网站运行得更好。网站性能调优涉及很多方面,从相对简单的缓存策略决策,到使用 ESI 和自动故障转移设计地理位置多样化的多级 CDN。

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

最后,这里必须提到墨菲定律:事情总会出错,而且更有可能是在零点零几分出错。最有可能发生在飓风期间,当你的手机没电时,当你的妻子为庆祝你们的结婚纪念日准备了一个温馨的夜晚时。

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

希望 Varnish 故障排除 能帮到您。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值