servers

varnish 4.0 官方文档翻译16-Backend servers/M/B/D/H

坚强是说给别人听的谎言 提交于 2019-12-02 07:53:51
Backend servers varnish有"后端"或者"源"服务器的概念。backend server提供给varnish加速的内容。 第一步设置是告诉varnish从哪儿找到backend server。使用你喜欢的编辑器打开varnishd引入的VCL文件。 VCL文件的开头有一小段有点像这样: # backend default { # .host = "127.0.0.1"; # .port = "8080"; # } 去掉注释后 backend default { .host = "127.0.0.1"; .port = "8080"; } 这样一段配置在varnish中定义了一个后端,被叫做default。(和c的函数定义有点相似),当varnish需要从后端获得内容时,它将连接127.0.0.1的8080端口。 varnish可以定义多个后端,也可以将几个后端放在一个后端集群里面已达到负载均衡的目的。 Multiple backends 某些情况下你可能需要让varnish缓存多个后端的内容。你可能想让varnish映射所有的url在单个后端上,或者是多个后端。这里有些参数可以满足这样的需求。 现在我们需要在PHP站点中引入java应用。java应用的链接都是以/java/开头的。 处理java应用的服务器监听在8000端口上。默认的default

varnish 4.0 官方文档翻译17-Misbehaving servers

让人想犯罪 __ 提交于 2019-12-01 04:01:46
Misbehaving servers varnish有个关键特性,为misbehaving(行为不端,诡异的)web服务器或者应用服务器提供保护的能力。 Grace mode 当几个客户端请求同一个页面的时候,varnish只发送一个请求到后端服务器,然后让其他几个请求挂起并等待返回结果;获得结果后,其它请求再复制后端的结果发送给客户端。有些产品中需要调用其他来将请求合并,而varnish自动做这些。 但如果同时有数以千计的请求,那么这个等待队列将变得庞大,这将导致2类潜在问题: 惊群问题(thundering herd problem),即突然释放大量的线程去复制后端返回的结果,将导致负载急速上升; 没有用户喜欢等待; 为了解决这类问题,可以配置varnish在缓存对象因超时失效后再保留一段时间,以给那些等待的请求返回过期的内容(stale content)。 为了提供给用户过期的内容,我们必须先有这些内容。因此我们在VCL中配置如下,使得varnish能在内容过期过后依然保持2分钟: sub vcl_backend_response { set beresp.grace = 2m; } 现在Varnish允许在对象过期后2分钟内提供给客户端。同时varnish也将刷新这个对象。刷新动作是异步发生的,发生在新的对象将替换老对象的同时。 我们可以在vcl