Varnish + ELB 公开课
Varnish + ELB open sessions
我正在使用清漆 4 + nginx + ELB。当我 运行 varnishlog 时,我每 2 秒就会看到如下新会话:
* << Session >> 65622
- Begin sess 0 HTTP/1
- SessOpen 10.90.148.245 16560 :80 10.13.12.136 80 1476955364.127661 17
- SessClose RX_TIMEOUT 5.005
- End
当我从 ELB 中删除清漆服务器时,我看不到这些会话。
这些会话来自哪里? (ELB健康检查间隔为300秒)
我在调查了几天后 ELB 将实例踢走的原因后发现了这个问题。
They are not the ELB IP addresses.
你确定吗?
ELB 中的每个节点——在低流量环境中通常有两个或三个节点——有两个 IP 地址,一个 public 地址和一个私有地址。
在 EC2 控制台的“网络与安全”>“网络接口”下找到有问题的 IP 地址。您应该发现 "Attachment owner" 设置为 amazon-elb
并且 "Description" 设置为平衡器的名称。
如果这真的不是您的 ELB,那么这应该会告诉您它是什么。
如果是您的 ELB,那么几乎可以肯定这些 "spare" 连接是 ELB 出于性能原因试图保持对您的实例开放的连接——以避免在下一个客户请求到达。
您的 varnish 设置关闭它们的速度相当快,因此 ELB 再试一次。
您应该能够 increase the req_timeout
设置大于 ELB 的空闲超时(默认 60 秒)的值,这应该会导致您看到的此类内容少很多。
如果 Varnish(或任何其他 Web 服务器)直接暴露在 Internet 上,这个建议会有所不同,因为您不希望随机浏览器占用资源...但是在 [=33] 中的 ELB =](不是 TCP)模式,ELB 负责管理来自浏览器的空闲持久连接,而不需要每个浏览器都消耗与您的实例的连接,并且 ELB 的前端和后端连接之间没有 1:1 相关性.
我正在使用清漆 4 + nginx + ELB。当我 运行 varnishlog 时,我每 2 秒就会看到如下新会话:
* << Session >> 65622
- Begin sess 0 HTTP/1
- SessOpen 10.90.148.245 16560 :80 10.13.12.136 80 1476955364.127661 17
- SessClose RX_TIMEOUT 5.005
- End
当我从 ELB 中删除清漆服务器时,我看不到这些会话。 这些会话来自哪里? (ELB健康检查间隔为300秒)
我在调查了几天后 ELB 将实例踢走的原因后发现了这个问题。
They are not the ELB IP addresses.
你确定吗?
ELB 中的每个节点——在低流量环境中通常有两个或三个节点——有两个 IP 地址,一个 public 地址和一个私有地址。
在 EC2 控制台的“网络与安全”>“网络接口”下找到有问题的 IP 地址。您应该发现 "Attachment owner" 设置为 amazon-elb
并且 "Description" 设置为平衡器的名称。
如果这真的不是您的 ELB,那么这应该会告诉您它是什么。
如果是您的 ELB,那么几乎可以肯定这些 "spare" 连接是 ELB 出于性能原因试图保持对您的实例开放的连接——以避免在下一个客户请求到达。
您的 varnish 设置关闭它们的速度相当快,因此 ELB 再试一次。
您应该能够 increase the req_timeout
设置大于 ELB 的空闲超时(默认 60 秒)的值,这应该会导致您看到的此类内容少很多。
如果 Varnish(或任何其他 Web 服务器)直接暴露在 Internet 上,这个建议会有所不同,因为您不希望随机浏览器占用资源...但是在 [=33] 中的 ELB =](不是 TCP)模式,ELB 负责管理来自浏览器的空闲持久连接,而不需要每个浏览器都消耗与您的实例的连接,并且 ELB 的前端和后端连接之间没有 1:1 相关性.