Сейчас я анализирую процент попадания лака вот так
Хотя это и хорошо, но большая часть запросов, которые обслуживает сервер, не кэшируется. Это резко снижает процент попаданий.
Как я могу изменить это так, чтобы я считал только запросы, которые являются кандидатами на кеширование, и вычислял скорость? Какую метрику varnishstat мне следует искать?
Кажется, что статистика точная, но вы хотите, чтобы некоторые URL-адреса не считались пропущенными.
Это зависит от того, что вы подразумеваете под запросами, которые не кэшируются. Если существует шаблон URL-адреса, в котором вы знаете, что каждый запрос URL-адреса будет уникальным, тогда зачем вообще искать этот URL-адрес или вводить ответ серверной части в кеш?
Поэтому исключите URL-адреса, которые вы хотите снизить, в файле конфигурации Varnish, например sitename.vcl:
sub vcl_recv {
# Do not cache following pages
if (req.url ~ "^/monitor.*\?heartbeat=") {
return (pass);
}
}
Для получения дополнительной информации прочтите man vcl
или посмотрите несколько примеров на Varnish вики.
В противном случае они POST (автоматически не кешируются) или они исключены из вашего файла .vcl?
Это не проблема статистики. Если ваш vcl_recv()
возвращает pass
или error
, то это не должно считаться поиском или промахом (см. блок-схему Вот), и ваш существующий расчет уже является репрезентативным.
Из varnishstat -l
, то лаковые документы, и из того, что я вижу, что можно отобразить в Munin, нет соответствующего счетчика, который бы делал что-либо существенно отличное от cache_hit или cache_miss.
s_req = client_req = (cache_hit + s_fetch)
s_fetch = cache_miss + s_pass
Так 1 - (s_fetch / s_req)
будет выглядеть хуже, чем у вас уже есть, считая пройденные или «некэшируемые» страницы как пропущенные, если это еще не сделано.
(Между прочим, если вы измените бэкэнд для «некэшируемой» страницы, то я не думаю, что Varnish имеет счетчики запросов на бэкэнд.)
Глупая идея: можно было бежать logtail varnishncsa.log | grep -c "\(POST\|whateverURLisnoncacheable\)"
и вычтите результат из общего количества промахов, но, вероятно, получение менее точных результатов требует много работы.