У меня проблемы с Varnish, он работает для пары просмотров, а потом просто портится ... Странно то, что он работает примерно для 20 или 30 запросов. Если я вызываю apache напрямую, он работает нормально. Я использую Varnish Version: 3.0.3-1 на Debian Squeeze, а пока Apache на 80-м порту и Varnish на 8080-м на том же сервере.
я использую https://github.com/mattiasgeniar/varnish-3.0-configuration-templates в качестве основы для моих VCL и модифицировал VCL для поддержки Concrete5.
Кто-нибудь знает, как мне отладить это?
backend default {
.host = "127.0.0.1";
.port = "80";
.connect_timeout = 1.5s;
.first_byte_timeout = 45s;
.between_bytes_timeout = 30s;
.probe = {
.url = "/";
.timeout = 1s;
.interval = 10s;
.window = 10;
.threshold = 8;
}
}
ЖУРНАЛ
0 CLI - Rd ping
0 CLI - Wr 200 19 PONG 1353791312 1.0
0 CLI - Rd ping
0 CLI - Wr 200 19 PONG 1353791315 1.0
0 Backend_health - default Still sick 4--X-R- 0 8 10 0.000689 0.000000 HTTP/1.1 301 Moved Permanently
(301 - это потому, что я проверяю www.)
Ваш серверный модуль отвечает 301
на проверку здоровья; только 200
по умолчанию является ожидаемым "здоровым" ответом. Замените зонд:
.probe = {
.url = "/";
.timeout = 1s;
.interval = 10s;
.window = 10;
.threshold = 8;
.expected_response = 301;
}
Редактировать :
Вот причина, по которой журнал возвращался вначале нормально, но через некоторое время он падал один за другим, чтобы в конечном итоге состояние больного: настройки для .interval, .threshold и .window - проверки работоспособности получали "нездоровый" "ответ, но они не считали работника больным, пока не получили достаточно плохих ответов, чтобы снизить количество успехов в окне до уровня ниже порога.
В 301
происходит, потому что зонд отправляет запрос с Host: 127.0.0.1
пока ваш сервер ожидает Host: example.com
(ваш домен), поэтому он не соответствует ни одному серверу, поэтому сервер catch all перенаправляет его.
Чтобы избежать этого, вы можете использовать .request
вместо .url
в зонд
.probe = {
.request = "GET / HTTP/1.1"
"Host: example.com"
"Connection: close"
"Accept: text/html" ;
.timeout = 1s;
.interval = 10s;
.window = 10;
.threshold = 8;
}
Вот ссылка на зонды