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