我们正在使用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/