Varnish 教程

Varnish是一款高性能的开源HTTP加速器,可以有效降低web服务器的负载,提升访问速度。根据官方的说法,Varnish是一个cache型的HTTP反向代理。

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

  当把Varnish部署上之后,web请求的处理过程会有一些变化。客户端的请求将首先被Varnish接受。Varnish将分析接收的请求,并将其转发到后端的web服务器上。后端的web服务器对请求进行常规的处理,并将依次将处理结果返回给Varnish。

但Varnish的功能并非仅限于此。Varnish的核心功能是将后端web服务器返回的结果缓存起来,如果发现后续有相同的请求,Varnish将不会将这个请求转发到web服务器,而是返回缓存中的结果。这将有效的降低web服务器的负载,提升响应速度,并且每秒可以响应更多的请求。Varnish速度很快的另一个主要原因是其缓存全部都是放在内存里的,这比放在磁盘上要快的多。诸如此类的优化措施使得Varnish的相应速度超乎想象。但考虑到实际的系统中内存一般是有限的,所以需要手工配置一下缓存的空间限额,同时避免缓存重复的内容。

处理缓存的顺序:接受到请求 –- 分析请求(分析你的URL,分析你的首部) -- hash计算 -- 查找缓存 -- 新鲜度检测 --- 访问源 --- 缓存 – 建立响应报文 – 响应并记录日志。

监听端口6081,管理进程management,子进程child/cache,官网https://www.varnish-cache.org/

Magento2支持Varnish,可以用Varnish来加速

学习资源:

varnish测试用varnishtop和varnishlog这2个命令。

varnishtop类似于top,就是查看正在请求的所有后端资源的情况,看哪个url对后端的影响最大,比如请求的url还有执行的状态等等。

varnishlog类似于日志,就是查看某个具体的url请求情况,应该是从日志中读取信息出来的。

我们调试的时候一般结合这2个命令来调试

https://varnish-cache.org/docs/6.0/users-guide/increasing-your-hitrate.html

常用命令

varnishtop -i BereqURL

显示所有正在请求的资源,从大到小排列。

varnishtop

实时更新当前资源的命中情况

varnishlog -q 'RespStatus == 503' -g request

查看http状态为503错误的url信息,可以帮助我们排除问题,看信息里的fetch error就知道具体报错的原因了,谷歌下就行

varnishlog -q 'ReqURL ~ "^/foo/bar"'

查看url为foo/bar路径的请求日志情况,显示内容和上面一样。

其实大部分报错是配置的问题,varnish配置参数说明在

https://varnish-cache.org/docs/4.1/reference/varnishd.html#http-accelerator-daemon

参考文档

https://www.cnblogs.com/sunhongleibibi/p/11613188.html