Назад | Перейти на главную страницу

Есть ли лучший способ проанализировать процент попадания лака?

Сейчас я анализирую процент попадания лака вот так

Хотя это и хорошо, но большая часть запросов, которые обслуживает сервер, не кэшируется. Это резко снижает процент попаданий.

Как я могу изменить это так, чтобы я считал только запросы, которые являются кандидатами на кеширование, и вычислял скорость? Какую метрику 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\)" и вычтите результат из общего количества промахов, но, вероятно, получение менее точных результатов требует много работы.