2016-07-27 11 views
1

У нас возникла странная проблема с Varnish 3.0. Мы наблюдаем скорость 10-20 отказов на узел в минуту в нашей лаковой ферме. В этом случае лак разговаривает с серверным сервером, в котором в этом случае находится приложение балансировки нагрузки (F5). Мы взяли TCP-дампы на слое лака и на уровне балансировки нагрузки. Похоже, серверный сервер отвечает за 3 секунды. В дампе TCP мы видим, что 200 Ok получают от Varnish через 3 секунды. После этого мы видим странное поведение. Сервер лаков отправляет сообщение ACK в балансировщик нагрузки в миллисекундах. Сообщение FIN, ACK отправляется после задержки около 10 секунд. Это время соответствует 10-секундной конфигурации в слое лака, и мы видим, что ошибка 503 возвращается из слоя Varnish. Это конфигурация бэкэнда Varnish. Бэкэнд был переименован из соображений безопасности.Varnish 3.0 возвращает 503 прерывисто, хотя сервер backend отвечает менее чем за 3 секунды

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

У кого-нибудь из вас возникла аналогичная проблема. Любые указатели на устранение этой проблемы были бы весьма признательны.

ответ

0

Проблема, похоже, в конфигурации between_bytes_timeout. Вы установили его в 10 секунд, и, согласно вам, балансировщик нагрузки занимает 10 секунд, чтобы отправить сообщение FIN, ACK. Из varnish docs:

between_bytes_timeout
Единицы: s
По умолчанию: 60

По умолчанию тайм-аут между байтами при получении данных из внутреннего интерфейса. Мы просто ждем этого много секунд между байтами, прежде чем сдаваться. Значение 0 означает, что он никогда не будет тайм-аут. VCL может переопределить это значение по умолчанию для каждого запроса бэкэнд и запроса на бэкэнд. Этот параметр не применяется к трубе.

попытайтесь увеличить этот номер и посмотреть, что произойдет