Varnish (программное обеспечение)

редактировать
Varnish
Developer (s) Poul-Henning Kamp, Varnish Software
Stable выпуск 6.5.1 / 25 сентября 2020 г.; 35 дней назад (2020-09-25)
Репозиторий Измените в Викиданных
Написано вC
Операционной системе BSD, Linux, Unix
Тип HTTP-ускоритель
Лицензия лицензия BSD с двумя пунктами
Веб-сайтvarnish-cache. org Измените это в Викиданных

Varnish - это ускоритель HTTP, разработанный для насыщенных контентом динамических веб-сайтов, а также API. В отличие от других веб-ускорителей, таких как Squid, который начал свою жизнь как кеш на стороне клиента, или Apache и nginx, которые в основном являются исходными серверами, Varnish был разработан как ускоритель HTTP. Varnish ориентирован исключительно на HTTP, в отличие от других прокси-серверов, которые часто поддерживают FTP, SMTP и другие сетевые протоколы.

Содержание
  • 1 История
  • 2 Архитектура
  • 3 Производительность
    • 3.1 Метрики производительности
    • 3.2 Сбор метрик
      • 3.2.1 varnishstat
      • 3.2.2 varnishlog
  • 4 Балансировка нагрузки
  • 5 Другие возможности
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки
История

Проект был инициирован онлайн-отделением норвежской бульварной газеты Verdens Gang. Архитектор и ведущий разработчик - датский независимый консультант Поул-Хеннинг Камп (известный разработчик FreeBSD ), а управление, инфраструктура и дополнительная разработка изначально были предоставлены норвежской консалтинговой компанией Linux. Позже поддержка, управление и развитие Varnish были выделены в отдельную компанию Varnish Software.

Varnish - это бесплатное программное обеспечение с открытым исходным кодом, доступное по двум пунктам лицензии BSD. Коммерческая поддержка доступна, среди прочего, от Varnish Software.

Версия 1.0 Varnish была выпущена в 2006 году, Varnish 2.0 в 2008 году, Varnish 3.0 в 2011 году, Varnish 4.0 в 2014 году, Varnish 5.0 в 2016 году и Varnish 6.0 в марте 2018 года.

Архитектура

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

Varnish сильно многопоточен, при этом каждое клиентское соединение обрабатывается отдельным рабочим потоком. При достижении настроенного ограничения на количество активных рабочих потоков входящие соединения помещаются в очередь переполнения; когда эта очередь достигает установленного предела, входящие соединения будут отклонены.

Основным механизмом конфигурации является язык конфигурации Varnish (VCL), предметно-ориентированный язык (DSL), используемый для написания перехватчиков, которые вызываются в критических точках при обработке каждого запроса. Большинство решений политики остается за кодом VCL, что делает Varnish более настраиваемым и адаптируемым, чем большинство других ускорителей HTTP. Когда скрипт VCL загружен, он транслируется в C, компилируется в общий объект системным компилятором и загружается непосредственно в ускоритель, который, таким образом, можно перенастроить без перезапуска.

Ряд параметров времени выполнения управляет такими вещами, как максимальное и минимальное количество рабочих потоков, различные таймауты и т. Д. Интерфейс управления командной строки позволяет изменять эти параметры, а новые сценарии VCL - скомпилироваться, загрузить и активировать без перезапуска ускорителя.

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

Производительность

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

Кроме того, медленная реализация malloc (например, в msvcrt Microsoft Windows ) может добавить ненужных конфликтов и тем самым ограничить производительность, поэтому общая рекомендация по запуску Varnish в средах на базе Linux или Unix.

Показатели производительности

Varnish Cache может ускорить доставку информации в несколько сотен раз. Для обеспечения правильной работы и производительности Varnish предоставляет метрики, которые можно отслеживать в следующих областях:

  • Клиентские метрики : клиентские соединения и запросы
  • Производительность кеша : кэш попаданий, выселения
  • Метрики потоков : создание потоков, сбои, очереди
  • Показатели серверной части : успех, сбой и работоспособность внутренних соединений

Сбор метрик

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

varnishstat

Запуск varnishstat из командной строки возвращает постоянно обновляемый список всех доступные показатели Varnish. Если добавлен флаг -1, varnishstat завершится после однократной печати списка. Varnishstat можно использовать как автономный инструмент для выборочной проверки состояния кеша. Для построения графиков показателей с течением времени, корреляции с другой статистикой по всей инфраструктуре и настройки предупреждений о любых проблемах, которые могут возникнуть, службы мониторинга могут интегрироваться с Varnish и собирать показатели varnishstat.

varnishlog

varnishlog - это инструмент, который можно использовать для отладки или настройки конфигурации Varnish, поскольку он предоставляет подробную информацию о каждом отдельном запросе.

Балансировка нагрузки

Varnish поддерживает балансировку нагрузки с использованием как циклического перебора, так и случайного директора, оба с взвешиванием для каждого сервера. Также доступна базовая проверка работоспособности бэкэндов.

Другие функции

Varnish Cache также включает:

  • Поддержка плагинов с модулями Varnish, также называемая
  • Поддержка Edge Side Включает, в том числе объединение сжатых фрагментов ESI
  • Gzip Сжатие и декомпрессия
  • DNS, случайное, хеширование и клиентские IP-директоры
  • HTTP Streaming Pass Fetch
  • Экспериментальная поддержка постоянного хранилища без исключения LRU
  • режимов Saint и Grace.
    • Если сервер неисправен и возвращает код состояния HTTP 500, льготный режим игнорирует заголовки истечения срока действия и продолжает возвращать кэшированные версии. Режим Saint используется при балансировке нагрузки, когда отказавший сервер заносится в черный список на период карантина и исключается из пула серверов.
См. Также
  • Портал бесплатного программного обеспечения с открытым исходным кодом
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-18 09:58:28
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте