5 простых шагов для проверки развертывания лака кэша с помощью Varnishtest

Varnish Cache — это акселератор HTTP с открытым исходным кодом, который используется для ускорения доставки контента на некоторых из ведущих динамических веб-сайтов, на которых можно получить контент. Тем не менее, производительность или скорость, что новичок в Varnish Cache можно ожидать от его развертывания может быть весьма туманным.

Это верно для пользователей в обеих крайностях спектра: от тех, кто играет с исходным кодом для создания более сложных функций, для тех, кто создал Лак Кэш с помощью настроек по умолчанию.

varnish test
Кэшинг не всегда так просто, как мы думаем. Несколько gotchas и проблемы могут занять некоторое время, чтобы освоить. (Изображение: Лак Кэш)

Представьте, что вы развернули Лак кэш в соответствии с настройками по умолчанию, чтобы доставить веб-содержимое и содержимое приложений быстро, надежно и в масштабе. Внезапно он перестает вести себя так, как надо. Либо это не кэширование или, что еще хуже, из-за плохого кэширования или неправильной политики cookie, кэшированное личное содержимое доставляется не тому клиенту.

В другом сценарии ограничения TTL (время проживания) могли быть установлены неправильно. Установите tTL предел слишком короткий, и вы получите слишком много нежелательных бэк-энд аугниты, которые будут замедлять веб-сайт. Установите его слишком долго, и объекты будут оставаться в кэше до истечения срока действия TTL, используя гораздо больше памяти, чем это необходимо.

Получение наилучшей производительности от Varnish Cache заключается в использовании его не только для кэширования, но и для признания недействительным. Предыдущая статья здесь, на Smashing Magazine объясняет различные способы сделать кэш недействительным с варнишем кэше. Не каждый метод хорошо работает для каждого веб-сайта. Возможно, часть контента, удаленного с веб-сайта, по-прежнему доставляются мобильным пользователям.

Мы можем легко избежать всех этих ошибок, выпустив тесты. Малоизвестный факт о Varnish Cache является то, что он поставляется со своим собственным инструментом тестирования, называется Varnishtest. Varnishtest — это программа, управляемая сценарием, которая может быть использована для создания макетов клиентов, для имитации транзакций, для получения контента из макетов или реальных задних концов, для взаимодействия с фактической конфигурацией Varnish Cache и утверждения ожидаемого поведения.

Чтобы обеспечить оптимальную производительность от развертывания Varnish Cache, необходимо интегрировать Varnishtest в дизайн. Лактест может использоваться системными администраторами в двух сценариях: (1) при настройке установки Varnish Cache и (2) при написании сложных кэширующих политик на языке конфигурации Varnish (VCL) или при настройке Лаккового кэша.

Код мастерит, которые работают над расширениями, написанными для Varnish Cache (так называемые VMO), могут использовать Varnishtest для определения и тестирования своих модулей. То же самое касается веб-разработчиков, которые пишут приложения, которые в полной мере используют Лак кэш. Как уже упоминалось, Varnishtest может быть использован для тестирования метода проверки кэша или для воспроизведения ошибок при подаче отчета об ошибке.

Язык случая теста лака

Обратите внимание, что Varnishtest не следует структуре модульного тестирования setUp (, test , , ) и не следует за assert tearDown разработкой, управляемой поведением («данный», «когда», «тогда»). У Varnishtest есть свой язык: Varnish Test Case (VTC).

Файлы VTC следуют конвенции о присвоении имен. Файлы, начинающимся с b (например,) b00001.vtc содержат основные тесты функциональности. (Полная схема именования тестовых скриптов доступна на GitHub.)


varnishtest "Varnish as Proxy" 

server s1 {
  rxreq
  txresp
} -start

varnish v1 -arg "-b ${s1_addr}:${s1_port}" -start

client c1 {
 txreq
 rxresp

 expect resp.http.via ~ "varnish"
} -run

1. Назовите тест

Все программы VTC начинаются с именования теста:


varnishtest "Varnish as Proxy"

Для запуска Varnishtest необходимо определить три компонента: сервер, экземпляр varnish Cache и клиент.

2. Объявить сервер origin


server s1 {
  rxreq
  txresp
} -start

Все серверные декларации должны начинаться с s . В приведенном выше server s1 коде, получает запрос ( ) и передает ответ ( rxreq txresp ). Команды rxreq и txresp описать поведение сервера; rxreq означает, что сервер примет входящий запрос, и txresp означает, что запрос будет дан ответ.

Команда -start загружает сервер s1 и делает доступными макросы ${s1_addr} и ${s1_port} , с IP-адресом и портом смоделированного задней части.

3. Объявить экземпляр лакового кэша


varnish v1 -arg "-b ${s1_addr}:${s1_port}" -start

Здесь varnish v1 объявляет экземпляр нашего реального сервера varnish, (т.е. varnishd ). Названия серверов Varnish должны начинаться с v . Этот экземпляр контролируется процессом менеджера и -start виляет ребенком, который является фактическим процессом кэша.

Есть много способов varnishd настройки. Один из способов заключается в том, чтобы передать аргументы с -arg , как в -arg -b ${s1_addr}:${s1_port} . Здесь -b есть varnishd вариант определения задней части. В этом случае используются IP-адрес и порт смоделированного задней части s1. Тем не менее, использование реального задней части также возможно, что позволяет использовать Varnishtest в качестве инструмента интеграции при тестировании реального задней части.

4. Имитировать клиента


client c1 {
  txreq
  rxresp

  expect resp.http.via ~ "varnish"
} -run

Моделируемые клиенты в Varnishtest начинаются с c . В этом примере c1 передается один запрос и получен один ответ. Поскольку Varnish является прокси- и должен быть получен из задней части через Лак-Кэш. Таким образом, c1 ожидает varnish в поле via заголовка HTTP. Tilde ( ~ ) используется в качестве оператора совпадений регулярных выражений, потому что точный текст в зависит от resp.http.via установленной версии Varnish. Наконец, клиент c1 запускается с -run командой. (Обратите внимание, что серверы Varnish обычно запускаются с -start командой, а клиенты — с -run командой.)

5. Выполнить тест


$varnishtest b00001.vtc
#  top TEST b00001.vtc passed (1.458)

Чтобы выполнить тест, просто оформите команду выше. По умолчанию Varnishtest выводит резюме пройденного теста и многословный выход только для неудачных тестов. Пройденный тест означает, что самая основная конфигурация Лак кэша является правильной.

Легкие тесты для максимальной производительности

Проблемы производительности, упомянутые в начале этой статьи, можно было бы предотвратить, если бы мы использовали Varnishtest перед тем, как идти в прямом эфире. Вот два простых примера теста, которые я написал, чтобы помочь вам протестировать метод проверки кэша и политики cookie:

  • Метод проверки кэша Убедитесь, что ваши ограничения TTL установлены правильно. Этот тест проверяет, что вы можете очистить объекты от кэша, таким образом гарантируя, что не слишком много памяти используется.
  • Конфигурация тестовых файлов cookie Поскольку файлы cookie используются для идентификации уникальных пользователей и могут содержать личную информацию, по умолчанию Varnish не кэширует страницу, если она содержит или Cookie Set-Cookie заголовок. Этот случай представляет собой сценарий для тестирования объектов кэша с заголовком cookie, чтобы гарантировать, что каждый из трех определенных клиентов получает правильный объект.

Однако существует гораздо больше документированных примеров тестирования для различных сценариев.

Лучший способ узнать, как создать тесты, запустив примеры, связанные с выше, в Varnish Cache, а затем написать свои собственные тесты на основе этих.

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

Веб-производительность имеет решающее значение для бизнеса в различных отраслях, и вы можете легко вывести догадки из производительности, выпекая Varnishtest в ваш дизайн и после этих пяти простых шагов для включения тестирования в конфигурацию ваших экземпляров varnish.

Источник: smashingmagazine.com

Великолепный Журнал

Великолепный, сокрушительный, разящий (см. перевод smashing) независимый журнал о веб-разработке. Основан в 2006 году в Германии. Имеет няшный дизайн и кучу крутых авторов, которых читают 2 млн человек в месяц.

Добавить комментарий

%d такие блоггеры, как: