我们正在使用Varnish 3.0遇到一个奇怪的问题。我们在 Varnish 场中观察到每节点每分钟10-20个故障率。在这种情况下,Varnish与后端服务器对话,该后端服务器由负载平衡器应用程序(F5)前置。我们在Varnish层和负载平衡器层进行了TCP转储。后端服务器似乎在3秒钟内响应。在TCP转储中,我们看到3秒钟后Varnish收到了200 Ok。在这之后,我们将看到奇怪的行为。 Varnish服务器会在几毫秒内将ACK消息发送到负载平衡器。大约10秒钟的延迟后发送FIN,ACK消息。这次匹配了Varnish层中的10秒配置,我们看到503错误从Varnish层返回。这是Varnish后端配置。由于安全原因,后端已重命名。

    backend backend1{
        .host = "<load balancer virtual server name>";
        .port = "<port>";
        .first_byte_timeout     = 120s;
        .connect_timeout        = 10s;
        .between_bytes_timeout  = 10s;
    }

你们有没有遇到过类似的问题。任何有关解决此问题的指针将不胜感激。

最佳答案

问题似乎出在 between_bytes_timeout 配置中。你已经设置为10秒,根据你的说法,负载均衡器需要10秒发送FIN,ACK消息。
varnish docs:



尝试增加这个数字,看看会发生什么

关于tcp - 即使后端服务器在3秒内做出响应,Varnish 3.0也会间歇性返回503,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38618290/

10-13 09:18