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 и другие сетевые протоколы.
Проект был инициирован онлайн-отделением норвежской бульварной газеты 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 из командной строки возвращает постоянно обновляемый список всех доступные показатели Varnish. Если добавлен флаг -1, varnishstat завершится после однократной печати списка. Varnishstat можно использовать как автономный инструмент для выборочной проверки состояния кеша. Для построения графиков показателей с течением времени, корреляции с другой статистикой по всей инфраструктуре и настройки предупреждений о любых проблемах, которые могут возникнуть, службы мониторинга могут интегрироваться с Varnish и собирать показатели varnishstat.
varnishlog - это инструмент, который можно использовать для отладки или настройки конфигурации Varnish, поскольку он предоставляет подробную информацию о каждом отдельном запросе.
Varnish поддерживает балансировку нагрузки с использованием как циклического перебора, так и случайного директора, оба с взвешиванием для каждого сервера. Также доступна базовая проверка работоспособности бэкэндов.
Varnish Cache также включает: