Достижение высокой частоты попаданий
Теперь, когда Varnish запущен, вы можете получить доступ к своему веб-приложению через Varnish. Если ваше приложение не разработано специально для работы за веб-акселератором, вам, вероятно, придётся внести изменения либо в конфигурацию, либо в само приложение, чтобы получить высокую частоту попаданий в Varnish.
Varnish не будет кэшировать ваши данные, если не уверен абсолютно, что это безопасно. Поэтому, чтобы понять, как Varnish принимает решение о кэшировании страницы, мы расскажем вам о нескольких инструментах, которые, как мы надеемся, помогут понять, что происходит в вашей настройке Varnish.
Обратите внимание, что вам нужен инструмент для просмотра HTTP-заголовков, передаваемых между Varnish и бэкендом. На сервере Varnish самый простой способ сделать это — использовать varnishlog и varnishtop, но иногда полезно использовать клиентский инструмент. Вот те, которые мы обычно используем.
Инструмент: varnishtop
Вы можете использовать varnishtop, чтобы определить, какие URL-адреса чаще всего обращаются к бэкенду. varnishtop -i BereqURL — это важная команда, которая показывает самые часто запрашиваемые URL-адреса, отправляемые Varnish на бэкенд. Вы можете найти дополнительные примеры использования varnishtop в разделе Статистики.
Инструмент: varnishlog
Когда вы определили URL-адрес, который часто отправляется на бэкенд, вы можете использовать varnishlog для просмотра запроса. varnishlog -q 'ReqURL ~ "^/foo/bar"' покажет вам запросы, поступающие от клиента, соответствующие /foo/bar.
Дополнительную информацию о работе varnishlog вы найдёте в разделе Ведение журнала в Varnish или в соответствующей странице справки.
Инструмент: lwp-request
lwp-request — это инструмент, являющийся частью библиотеки World Wide Web для Perl. Это несколько простых программ, которые могут выполнять HTTP-запрос и отображать результат. Мы в основном используем две программы: GET и HEAD.
Сайт vg.no был первым, который использовал Varnish, и люди, работающие с Varnish там, довольно искушённые. Поэтому интересно посмотреть на их HTTP-заголовки. Давайте отправим запрос GET для их главной страницы:
$ GET -H 'Host: www.vg.no' -Used http://vg.no/ GET http://vg.no/ Host: www.vg.no User-Agent: lwp-request/5.834 libwww-perl/5.834 200 OK Cache-Control: must-revalidate Refresh: 600 Title: VG Nett - Forsiden - VG Nett X-Age: 463 X-Cache: HIT X-Rick-Would-Never: Let you down X-VG-Jobb: http://www.finn.no/finn/job/fulltime/result?keyword=vg+multimedia Merk:HeaderNinja X-VG-Korken: http://www.youtube.com/watch?v=Fcj8CnD5188 X-VG-WebCache: joanie X-VG-WebServer: leon
Хорошо. Давайте посмотрим, что делает GET. GET обычно отправляет HTTP-запросы 0.9, в которых отсутствует заголовок «Host». Поэтому мы добавляем заголовок «Host» с опцией «-H». «-U» выводит заголовки запроса, «-s» — код состояния ответа, «-e» — заголовки ответа, а «-d» игнорирует само содержимое. Нам не нужно содержимое, только заголовки.
Как вы можете видеть, VG добавляет довольно много информации в свои заголовки. Некоторые заголовки, например, «X-Rick-Would-Never», специфичны для vg.no и их несколько странного чувства юмора. Другие, например, «X-VG-Webcache», предназначены для отладки.
Таким образом, чтобы проверить, устанавливает ли сайт куки для определенного URL-адреса, просто выполните:
GET -Used http://example.com/ |grep ^Set-Cookie
Инструмент: Live HTTP Headers
Также существует плагин для Firefox под названием Live HTTP Headers. Этот плагин позволяет просматривать отправляемые и получаемые заголовки. Live HTTP Headers можно найти по адресу https://addons.mozilla.org/en-US/firefox/addon/3829/ или, выполнив поиск в Google по запросу «Live HTTP Headers».
Copyright © 2006 Verdens Gang AS
Copyright © 2006–2020 Varnish Software AS
Licensed under the BSD-2-Clause License.
https://varnish-cache.org/docs/7.4/users-guide/increasing-your-hitrate.html