0

我正在使用清漆 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 将实例踢走的原因后,我发现了这个问题。

4

1 回答 1

2

它们不是 ELB IP 地址。

你确定吗?

ELB 中的每个节点——在低流量环境中通常有两个或三个节点——有两个 IP 地址,一个公共地址和一个私有地址。

在 EC2 控制台的 Network & Security > Network Interfaces 下找到有问题的 IP 地址。您应该会发现“附件所有者”设置为amazon-elb平衡器名称,“描述”设置为平衡器名称。

如果它真的不是你的 ELB,那么这应该告诉你它是什么。

如果它是您的 ELB,那么这些几乎可以肯定是 ELB 出于性能原因试图保持对您的实例开放的“备用”连接——以避免在下一个客户端请求到达时等待建立新连接。

你的清漆设置很快就关闭了它们,所以 ELB 再试一次。

您应该能够将时间增加到req_timeout大于 ELB 的空闲超时(默认 60 秒)的值,这应该会导致您看到的这些时间要少得多。

如果 Varnish(或任何其他 Web 服务器)直接暴露于 Internet,则此建议会有所不同,因为您不希望随机浏览器占用资源……但对于 HTTP/S(而非 TCP)模式下的 ELB , ELB 负责管理来自浏览器的空闲持久连接,而不需要每个连接都消耗到您的实例的连接,并且 ELB 的正面和背面的连接之间没有 1:1 的相关性。

于 2016-10-20T16:31:17.913 回答