我在 varnish default.vcl 中看到了 .max_connections 参数,并通过在网上搜索,找到了下面的文章 .max_连接数:您授权 Varnish 向该后端开放多少个连接。请记住,连接会被池化并重复使用,因此您的后端无论如何都应该更轻松,但有时,您需要对其进行更多保护。但请小心,因为这是一个硬性限制,如果达到该限制,Varnish 将不会使用该后端,即使这意味着向用户返回错误。
现在,我想知道最大连接数是指请求数/秒还是并发用户数或其他什么。对于后端 nginx 服务器,我将如何计算它?
答案1
需要多个后端连接
单个连接上没有请求复用。如果HTTP/1.1
同时有多个对 Varnish 的请求,对于未存储在缓存中的资源,可能会打开多个后端连接。
Varnish 将保持与后端的连接开放,并将它们重新用于其他请求。Varnish 还将执行请求合并并折叠对同一资源的后端请求。
话虽如此,Varnish 仍然需要向单个后端开放多个连接。
限制后端连接
根据您的平台获得的流量、缓存的命中率以及后端服务器拥有的资源,您可能需要限制与后端的连接。
使用 Varnish 的目的是避免与源服务器的过多连接。通过引入max_connections
后端定义,您可以保护源服务器免受 Varnish 中过多的重新验证。
如果您的命中率不错,那么您就永远不会达到这个限制,但是如果您这样做,max_connections
将确保获取排队,直到连接被释放。
计算max_connections
max_connections
是否有办法防止你的服务器内存不足。
您要选择的值取决于原始服务器拥有的资源量以及满足请求所需的平均时间。
ab
您可以使用或执行负载测试,siege
并确定您的源在进入高负载之前可以处理多少个同时连接。
请确保
keepalive
在测试期间关闭
这需要反复试验。确保你的初始max_connections
值足够高,发送足够的流量,然后寻找临界点。
降低值max_connections
,冲洗,重复。
一旦您确定了max_connections
来源的设置,请将其保存在来源的 Web 服务器配置中(Apache 或 Nginx)。
最终,您还将在 Varnish 后端定义中设置该值。
这个想法是,Varnish 不应该允许比其配置的处理数量更多的同时连接到你的后端服务器。