光油3.0.5循环主任不平衡

我有一个架构,两个清漆服务器坐在5个站台前。 每个清漆服务器都configuration了一个循环后端导向器,但是在中等到高负载的时候,清漆似乎非常偏向清单中第一个定义的后端。

清漆版本是3.0.5。

如果第一个后端被标记为病态,那么列表中的第二个后端会受到很大的青睐,依此类推。

varnish> backend.list 200 Backend name Refs Admin Probe web1(************,,8080) 102 probe Healthy 8/8 web2(************,,8080) 17 probe Healthy 8/8 web3(************,,8080) 9 probe Healthy 8/8 web4(************,,8080) 17 probe Healthy 8/8 web5(************,,8080) 12 probe Healthy 8/8 

VCL的某些部分可能是相关的:

 probe healthcheck { .request = "GET /LICENSE.txt HTTP/1.1" "Host: **********.co.uk" "Connection: close"; .interval = 120s; .timeout = 90s; # High values due to expected slow responses .window = 8; .threshold = 3; .initial = 3; #.expected_response = 200; # Still want the Magento maintenance page to display so no response code check } backend web1 { .host = "************"; .port = "8080"; .connect_timeout = 240s; # High values due to expected slow responses .first_byte_timeout = 240s; # High values due to expected slow responses .between_bytes_timeout = 240s; # High values due to expected slow responses .probe = healthcheck; } backend web2 { .host = "************"; .port = "8080"; .connect_timeout = 240s; # High values due to expected slow responses .first_byte_timeout = 240s; # High values due to expected slow responses .between_bytes_timeout = 240s; # High values due to expected slow responses .probe = healthcheck; } backend web3 { .host = "************"; .port = "8080"; .connect_timeout = 240s; # High values due to expected slow responses .first_byte_timeout = 240s; # High values due to expected slow responses .between_bytes_timeout = 240s; # High values due to expected slow responses .probe = healthcheck; } backend web4 { .host = "************"; .port = "8080"; .connect_timeout = 240s; # High values due to expected slow responses .first_byte_timeout = 240s; # High values due to expected slow responses .between_bytes_timeout = 240s; # High values due to expected slow responses .probe = healthcheck; } backend web5 { .host = "************"; .port = "8080"; .connect_timeout = 240s; # High values due to expected slow responses .first_byte_timeout = 240s; # High values due to expected slow responses .between_bytes_timeout = 240s; # High values due to expected slow responses .probe = healthcheck; } director backend_director round-robin { { .backend = web1; } { .backend = web2; } { .backend = web3; } { .backend = web4; } { .backend = web5; } } sub vcl_recv { set req.backend = backend_director; # loads more stuff } 

任何人都可以阐明为什么轮询董事会如此重视第一个定义的后端,或者什么可能导致完全绕过导演? 我已经确保在vcl_recv中不使用return(pipe)