Spec-Zone.ru › Varnish

varnishd

HTTP-акселератор демона

Раздел руководства:

1

СИНТАКСИС

varnishd

[-a [name=][listen_address[,PROTO]] [-b [host[:port]|path]] [-C] [-d] [-F] [-f config] [-h type[,options]] [-I clifile] [-i identity] [-j jail[,jailoptions]] [-l vsl] [-M address:port] [-n workdir] [-P file] [-p param=value] [-r param[,param…]] [-S secret-file] [-s [name=]kind[,options]] [-T address[:port]] [-t TTL] [-V] [-W waiter]

varnishd [-x parameter|vsl|cli|builtin|optstring]

varnishd [-?]

ОПИСАНИЕ

Демон varnishd принимает HTTP-запросы от клиентов, передает их бэкенд-серверу и кэширует возвращаемые документы, чтобы лучше удовлетворять будущие запросы на тот же документ.

ПАРАМЕТРЫ

Основные параметры

-a <[name=][listen_address[,PROTO]]>

Принимает запросы клиентов на указанный listen_address (см. ниже).

Имя используется в логах. Если имя не указано, используются «a0», «a1» и т.д.

PROTO может быть «HTTP» (по умолчанию) или «PROXY». Можно использовать обе версии протокола proxy (1 и 2).

Разрешено несколько параметров -a.

Если параметр -a не указан, по умолчанию -a :80 будет прослушивать все IPv4 и IPv6 интерфейсы.

-a <[name=][ip_address][:port][,PROTO]>

ip_address может быть именем хоста («localhost»), IPv4-адресом в точечном формате («127.0.0.1») или IPv6-адресом в квадратных скобках («[::1]»)

Если порт не указан, используется порт 80 (http).

Требуется хотя бы один из ip_address или порт.

-a <[name=][path][,PROTO][,user=name][,group=name][,mode=octal]>

(VCL4.1 и выше)

Принимает подключения по сокету Unix. Путь должен быть абсолютным («/path/to/listen.sock») или «@» за которым следует имя абстрактного сокета («@myvarnishd»).

Подпараметры user, group и mode могут использоваться для указания разрешений файла сокета — используйте имена для пользователя и группы, и 3-значное восьмеричное значение для режима. Эти подпараметры не применяются к абстрактным сокетам.

-b <[host[:port]|path]>

Использовать указанный хост в качестве бэкенд-сервера. Если порт не указан, используется значение по умолчанию 8080.

Если значение -b начинается с /, оно интерпретируется как абсолютный путь к сокету Unix, к которому Varnish подключается. В этом случае значение -b должно удовлетворять условиям, необходимым для поля .path объявления бэкенда, см. VCL. Бэкенды с адресами Unix-сокет могут быть использованы только с версиями VCL ≥ 4.1.

-b может быть использован только один раз и не вместе с f.

-f config

Использовать указанный конфигурационный файл VCL вместо встроенного значения по умолчанию. Подробнее о синтаксисе VCL см. в VCL.

Если используется один параметр -f, то экземпляр VCL, загруженный из файла, называется «boot» и сразу становится активным. Если используется более одного параметра -f, экземпляры VCL называются «boot0», «boot1» и так далее в порядке, соответствующем параметрам -f, а последний называется «boot», который становится активным.

Должен быть указан либо -b, либо один или несколько параметров -f, но не оба, и они оба не могут быть пропущены, если не используется -d, чтобы запустить varnishd в режиме отладки. Если в качестве единственного параметра -f указана пустая строка, то varnishd запускается без запуска процесса-работника, а процесс управления будет принимать команды CLI. Вы также можете объединить пустой параметр -f с скриптом инициализации (-I параметр), и дочерний процесс будет запущен, если в конце инициализации есть активный VCL.

При использовании относительного имени файла config ищется в vcl_path. Можно установить этот путь перед использованием параметров -f с помощью параметра -p. Во время запуска varnishd не жалуется на небезопасные пути VCL: в отличие от varnish-cli(7), который позже может быть доступен удаленно, для запуска varnishd требуются локальные привилегии.

-n workdir

Директория выполнения для общей памяти, скомпилированных VCL и т.д.

В критически важных приложениях эта директория должна находиться на файловой системе с кешированием в оперативной памяти.

Относительные пути будут добавлены к /var/run/ (ПРИМЕЧАНИЕ: Бинарные пакеты Varnish могут настроить это для платформы.)

Значение по умолчанию — /var/run/varnishd (ПРИМЕЧАНИЕ: как указано выше).

Документационные параметры

Для этих параметров varnishd выводит информацию в стандартный вывод и завершает работу. При использовании параметра -x он должен быть единственным параметром (выводит документацию в формате reStructuredText, т.е. RST).

-?

Выводит сообщение об использовании.

-x parameter

Выводит документацию по параметрам выполнения (-p параметры), см. Список параметров.

-x vsl

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

-x cli

Выводит документацию командной строки, см. varnish-cli.

-x builtin

Выводит содержимое программы VCL по умолчанию builtin.vcl.

-x optstring

Выводит параметр optstring для getopt(3) для помощи в написании скриптов-оболочек.

Параметры работы

-F

Не создавать дочерний процесс, выполняется в фоновом режиме. Только один из -F или -d может быть указан, и -F не может использоваться вместе с -C.

-T <address[:port]>

Предлагает интерфейс управления по указанному адресу и порту. См. varnish-cli для документации команд управления. Для отключения интерфейса управления используйте none.

-M <address:port>

Подключается к этому порту и предлагает командную строку. Подумайте об этом как о обратном подключении. При запуске с -M и отсутствии определенного бэкенда, дочерний процесс (кэш) не запустится изначально.

-P file

Записывает PID процесса в указанный файл.

-i identity

Указывает идентификатор сервера Varnish. К нему можно получить доступ, используя server.identity из VCL.

Идентификатор сервера используется для поля received-by заголовков Via, генерируемых Varnish. По этой причине он должен быть валидным токеном, как определено грамматикой HTTP.

Если не указано, используется вывод gethostname(3), в котором предполагается, что синтаксис правильный.

-I clifile

Выполняет команды управления в файле, указанном как clifile перед запуском процесса-работника, см. Файл команды CLI.

Параметры настройки

-t TTL

Устанавливает время жизни (TTL) по умолчанию для кэшированных объектов. Это сокращение для указания параметра времени жизни по умолчанию default_ttl.

-p <param=value>

Устанавливает значение параметра, указанного параметром, в указанное значение, см. Список параметров для получения подробностей. Этот параметр можно использовать несколько раз для указания нескольких параметров.

-s <[name=]type[,options]>

Использует указанный бэкенд хранилища. См. раздел Хранилище.

Этот параметр можно использовать несколько раз для указания нескольких файлов хранилища. Имя используется в логах, VCL, статистике и т.д. Если имя не указано, используются «s0», «s1» и т.д.

-l <vsl>

Указывает размер пространства для записей VSL, сокращение от -p vsl_space=<vsl>. Можно использовать масштабирующие суффиксы, такие как ‘K’ и ‘M’, до (Г)игабайт. См. vsl_space для получения дополнительной информации.

Параметры безопасности

-r <param[,param…]>

Делает указанные параметры только для чтения. Это предоставляет системному администратору способ ограничения возможностей Varnish CLI. Рассмотрите возможность сделать параметры, такие как cc_command, vcc_allow_inline_c и vmod_path только для чтения, так как они потенциально могут использоваться для повышения привилегий из CLI.

-S secret-file

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

Если этот аргумент не указан, секрет, сгенерированный из системного генератора псевдослучайных чисел, будет записан в файл _.secret в рабочей директории (см. opt_n) с правами доступа по умолчанию для пользователя, запустившего varnish.

Таким образом, пользователи, желающие делегировать управление varnish, вероятно, захотят создать собственный секретный файл с соответствующими правами доступа (например, разрешимый для Unix-группы для делегирования управления).

-j <jail[,jailoptions]>

Указывает механизм тюрьмы для использования. См. раздел Тюрьма.

Дополнительные параметры разработки и отладки

-d

Включает режим отладки: родительский процесс выполняется в фоновом режиме с подключением к командной строке по stdin/stdout, а дочерний процесс должен запускаться явно с помощью команды командной строки. Остановка родительского процесса также приведет к остановке дочернего.

Можно указать только один из -d или -F, а -d нельзя использовать вместе с -C.

-C

Выводит скомпилированный код VCL на языке C и завершает работу. Укажите файл VCL для компиляции с помощью параметра -f. Для использования -C необходимо использовать либо -f, либо -b, а -C нельзя использовать с -F или -d.

-V

Выводит номер версии и завершает работу. Это должен быть единственный параметр.

-h <type[,options]>

Устанавливает алгоритм хеширования. Список поддерживаемых алгоритмов см. в разделе Алгоритм хеширования.

-W waiter

Указывает тип используемого механизма ожидания.

Алгоритм хеширования

Доступны следующие алгоритмы хеширования:

-h critbit

Структура дерева с самонастраиваемым размером. По умолчанию используется в Varnish Cache 2.1 и более поздних версиях. По сравнению с более традиционным деревом B, дерево critbit почти полностью без блокировок. Не изменяйте его, если не уверены, что делаете.

-h simple_list

Простой двусвязный список. Не рекомендуется для использования в производственной среде.

-h <classic[,buckets]>

Стандартная хеш-таблица. Ключ хеширования — CRC32 URL объекта по модулю размера хеш-таблицы. Каждый элемент таблицы указывает на список элементов с одинаковым ключом хеширования. Параметр buckets определяет количество элементов в хеш-таблице. По умолчанию значение равно 16383.

Хранилище

Формат аргумента для определения хранилищ:

-s <[name]=kind[,options]>

Если name опущено, Varnish будет именовать хранилища sN, начиная с s0 и увеличивая N для каждого нового хранилища.

Для kind и options см. подробности ниже.

Хранилища могут использоваться в vcl как storage.name, таким образом, например, если myStorage было определено -s myStorage=malloc,5G, оно может использоваться в VCL следующим образом:

set beresp.storage = storage.myStorage;

Особое значение name — Transient, которое является хранилищем по умолчанию для неукешируемых объектов, полученных в результате пропуска, попадания (промах) или попадания (пропуск).

Если параметры -s не указаны, используется значение по умолчанию:

-s default,100m

Если хранилище Transient не определено, используется хранилище по умолчанию default как если бы оно было определено как:

-s Transient=default

Доступны следующие типы хранилищ и параметры:

-s <default[,size]>

Тип хранилища по умолчанию соответствует umem если доступен и malloc в противном случае.

-s <malloc[,size]>

malloc — хранилище на основе памяти.

-s <umem[,size]>

umem — хранилище, более эффективное, чем malloc, на платформах, где оно доступно.

Подробности см. в разделе про umem в главе Storage backends The Varnish Users Guide.

-s <file,path[,size[,granularity[,advice]]]>

Хранилище file хранит данные в файле на диске. Файл будет доступен с помощью mmap. Обратите внимание, что это хранилище не обеспечивает сохранение кеша.

Путь обязателен. Если путь указывает на каталог, будет создан временный файл в этом каталоге и немедленно удален. Если путь указывает на несуществующий файл, файл будет создан.

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

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

Advice сообщает ядру, как varnishd планирует использовать этот сопоставленный регион, чтобы ядро могло выбрать подходящие методы предварительной загрузки и кэширования. Возможные значения normal, random и sequential, соответствующие MADV_NORMAL, MADV_RANDOM и MADV_SEQUENTIAL соответственно. По умолчанию random.

-s <persistent,path,size>

Хранилище persistent. Varnish будет хранить объекты в файле таким образом, чтобы гарантировать сохранение большинства объектов в случае планового или внепланового завершения работы Varnish. Хранилище persistent имеет несколько проблем и, вероятно, будет удалено в будущей версии Varnish.

Клетка

Клетки Varnish — обобщение различных методов, специфичных для платформы, для ограничения привилегий процессов varnish. Они могут иметь специфические параметры. Доступные клетки:

-j <solaris[,worker=`privspec`]>

Снижает privileges(5) для varnishd и дочерних процессов до минимально необходимого набора. Доступно только на платформах, которые имеют вызов setppriv(2).

Необязательный аргумент worker может быть использован для передачи спецификации привилегий (см. ppriv(1)) для расширения эффективного набора процесса varnish worker. Хотя расширенные привилегии могут потребоваться для пользовательских vmod, не использование параметра worker всегда более безопасно.

Пример предоставления основных привилегий процессу worker:

-j solaris,worker=basic
-j <unix[,user=`user`][,ccgroup=`group`][,workuser=`user`]>

По умолчанию на всех других платформах, когда varnishd запускается с эффективным uid 0 («как root»).

При активации механизма клетки unix, varnish переключится на альтернативного пользователя для дочерних процессов и изменит эффективный uid главного процесса, когда это возможно.

Необязательный аргумент user указывает, какого альтернативного пользователя использовать. По умолчанию varnish.

Необязательный аргумент ccgroup указывает группу, добавляемую к дочерним процессам varnish, которым требуется доступ к компилятору C. По умолчанию нет.

Необязательный аргумент workuser указывает альтернативного пользователя для процесса worker. По умолчанию vcache.

Пользователи, указанные для аргументов user и workuser, должны иметь одну и ту же основную («логин») группу.

Для настройки системы для пользователей по умолчанию с именем группы varnish, могут быть использованы команды оболочки, подобные этим:

groupadd varnish
useradd -g varnish -d /nonexistent -s /bin/false \
  -c "Varnish-Cache Daemon User" varnish
useradd -g varnish -d /nonexistent -s /bin/false \
  -c "Varnish-Cache Worker User" vcache
-j none

Вариант клетки в последнюю очередь: с механизмом клетки none, varnish запустит все процессы с привилегиями, с которыми он был запущен.

Интерфейс управления

Если был указан параметр -T, varnishd предоставит интерфейс управления командной строкой по указанному адресу и порту. Рекомендуемый способ подключения к интерфейсу управления командной строкой — с помощью varnishadm.

Доступные команды описаны в varnish-cli.

Файл команды командной строки

Параметр -I позволяет запускать произвольные команды управления при запуске varnishd, перед запуском процесса worker. В частности, так загружаются конфигурации, к ним применяются метки и активируется экземпляр VCL, использующий эти метки при запуске:

vcl.load panic /etc/varnish_panic.vcl
vcl.load siteA0 /etc/varnish_siteA.vcl
vcl.load siteB0 /etc/varnish_siteB.vcl
vcl.load siteC0 /etc/varnish_siteC.vcl
vcl.label siteA siteA0
vcl.label siteB siteB0
vcl.label siteC siteC0
vcl.load main /etc/varnish_main.vcl
vcl.use main

Каждая строка в файле, включая последнюю, должна заканчиваться символом новой строки или возврата каретки.

Если команда в файле начинается с '-', ошибка не приведет к прерыванию запуска.

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

ПАРАМЕТРЫ ВО ВРЕМЯ РАБОТЫ

Флаги параметров во время работы

Параметры во время работы отмечены сокращенными флагами, чтобы избежать многократного повторения одного и того же текста в таблице ниже. Значение флагов:

  • experimental

    У нас нет точной информации о хороших/плохих/оптимальных значениях для этого параметра. Мы приветствуем отзывы с опытом и наблюдениями.

  • delayed

    Этот параметр можно изменить на лету, но он не вступит в силу немедленно.

  • restart

    Для вступления этого параметра в силу необходимо остановить и перезапустить процесс worker.

  • reload

    Для вступления этого параметра в силу необходимо перезагрузить программы VCL.

  • wizard

    Не трогайте, если вы действительно не знаете, что делаете.

  • only_root

    Работает только если varnishd запущен как root.

Исключения значений по умолчанию на 32-битных системах

Обратите внимание, что на 32-битных системах некоторые значения по умолчанию или максимальные значения уменьшаются по сравнению со значениями, указанными ниже, чтобы сохранить память VM:

  • workspace_client: 24k
  • workspace_backend: 20k
  • http_resp_size: 8k
  • http_req_size: 12k
  • gzip_buffer: 4k
  • vsl_buffer: 4k
  • vsl_space: 1 ГБ (максимум)
  • thread_pool_stack: 64k

Список параметров

Этот текст сгенерирован из того же текста, который вы найдете в командной строке, если используете команду param.show:

accept_filter

ПРИМЕЧАНИЕ: Этот параметр зависит от функции, которая не доступна на всех платформах.

  • Единицы: bool
  • Значение по умолчанию: включено (если ваша платформа поддерживает фильтры accept)
  • Флаги: must_restart

Включить ядровые фильтры accept. Для их активации может потребоваться загрузка модуля ядра.

Включение accept_filter может помешать некоторым запросам достичь Varnish в первую очередь. Некорректные запросы могут остаться незамеченными и не увеличат счетчик client_req_400. Запросы GET или HEAD с телом могут быть заблокированы полностью.

acceptor_sleep_decay
  • Значение по умолчанию: 0.9
  • Минимальное значение: 0
  • Максимальное значение: 1
  • Флаги: experimental

Если у нас закончились ресурсы, такие как дескрипторы файлов или потоки-работники, акцептор будет засыпать между операциями accept. Этот параметр (мультипликативно) уменьшает время сна для каждой успешной операции accept. (например: 0.9 = уменьшение на 10%)

acceptor_sleep_incr
  • Единицы: секунды
  • Значение по умолчанию: 0.000
  • Минимальное значение: 0.000
  • Максимальное значение: 1.000
  • Флаги: experimental

Если у нас закончились ресурсы, такие как дескрипторы файлов или потоки-работники, акцептор будет засыпать между операциями accept. Этот параметр контролирует, на сколько дольше мы спим, каждый раз, когда не удается принять новое соединение.

acceptor_sleep_max
  • Единицы: секунды
  • Значение по умолчанию: 0.050
  • Минимальное значение: 0.000
  • Максимальное значение: 10.000
  • Флаги: experimental

Если у нас закончились ресурсы, такие как дескрипторы файлов или потоки-работники, акцептор будет засыпать между операциями accept. Этот параметр ограничивает, сколько времени он может спать между попытками принять новые соединения.

auto_restart
  • Единицы: bool
  • Значение по умолчанию: включено

Автоматически перезапускать дочерний/рабочий процесс, если он завершится.

backend_idle_timeout
  • Единицы: секунды
  • Значение по умолчанию: 60.000
  • Минимальное значение: 1.000

Таймаут, прежде чем мы закроем неиспользуемые подключения к бэкенду.

backend_local_error_holddown
  • Единицы: секунды
  • Значение по умолчанию: 10.000
  • Минимальное значение: 0.000
  • Флаги: experimental

При подключении к бэкендам некоторые коды ошибок (EADDRNOTAVAIL, EACCESS, EPERM) сигнализируют о нехватке локальных ресурсов или проблемах в конфигурации, для которых повторные попытки подключения могут ухудшить ситуацию из-за сложности операций в ядре. Этот параметр предотвращает многократные попытки подключения в течение указанного времени.

backend_remote_error_holddown
  • Единицы: секунды
  • Значение по умолчанию: 0.250
  • Минимальное значение: 0.000
  • Флаги: experimental

При подключении к бэкендам некоторые коды ошибок (ECONNREFUSED, ENETUNREACH) сигнализируют о фундаментальных проблемах подключения, таких как отказ бэкенда принимать соединения или маршрутизации, для которых повторные попытки подключения считаются бесполезными. Этот параметр предотвращает многократные попытки подключения в течение указанного времени.

ban_cutoff
  • Единицы: запреты
  • Значение по умолчанию: 0
  • Минимальное значение: 0
  • Флаги: experimental

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

Когда этот параметр установлен на ненулевое значение, ban-lurker продолжает работать со списком запретов в обычном режиме сверху вниз, но когда он достигает ban_cutoff-го запрета, он обрабатывает все объекты, как если бы они соответствовали запрету, и удаляет их из кэша. Активно используемые объекты проверяются на соответствие списку запретов во время запроса, и, следовательно, скорее всего, будут связаны с запретами в верхней части списка запретов. С ban_cutoff удаляются наименее недавно использованные объекты («хвост»).

Этот параметр является страховкой, чтобы избежать плохих времен отклика из-за того, что запреты проверяются во время поиска. Установка отсечки обменивает время отклика на эффективность кэша. Рекомендуемое значение пропорционально rate(bans_lurker_tests_tested) / n_objects во время работы ban-lurker, что представляет собой количество запретов, которые система может выдержать. Дополнительная задержка из-за проверки запроса на запрет составляет порядка ban_cutoff / rate(bans_lurker_tests_tested). Например, для rate(bans_lurker_tests_tested) = 2М/с и допустимой задержки 100 мс, хорошее значение для ban_cutoff может быть 200К.

ban_dups
  • Единицы: bool
  • Значение по умолчанию: включено

Удаление более старых идентичных запретов при добавлении нового. Это экономит ресурсы ЦП, так как не нужно сравнивать объекты с идентичными запретами. Это пустая трата времени, если у вас много запретов, которые никогда не идентичны.

ban_lurker_age
  • Единицы: секунды
  • Значение по умолчанию: 60.000
  • Минимальное значение: 0.000

Ban-lurker будет игнорировать запреты, пока они не будут такими старыми. При добавлении запрета активный трафик будет проверен на соответствие ему как часть поиска объекта. Поскольку многие приложения выдают запреты группами, этот параметр откладывает работу ban-lurker до окончания наплыва.

ban_lurker_batch
  • Значение по умолчанию: 1000
  • Минимальное значение: 1

Ban-lurker засыпает на ${ban_lurker_sleep} после проверки такого количества объектов. Используйте это, чтобы регулировать бан-lurker, если он потребляет слишком много ресурсов.

ban_lurker_holdoff
  • Единицы: секунды
  • Значение по умолчанию: 0.010
  • Минимальное значение: 0.000
  • Флаги: experimental

Сколько времени ban-lurker спит, уступая место поиску из-за конфликта блокировок.

ban_lurker_sleep
  • Единицы: секунды
  • Значение по умолчанию: 0.010
  • Минимальное значение: 0.000

Сколько времени ban-lurker спит после проверки ${ban_lurker_batch} объектов. Используйте это, чтобы регулировать ban-lurker, если он потребляет слишком много ресурсов. Значение нуль полностью отключит ban-lurker.

between_bytes_timeout
  • Единицы: секунды
  • Значение по умолчанию: 60.000
  • Минимальное значение: 0.000

Мы ждем не более этого количества секунд между полученными байтами от бэкенда, прежде чем отказаться от получения. Значения VCL на основе бэкенда или запроса к бэкенду имеют приоритет. Этот параметр не применяется к запросам с использованием pipe.

cc_command

ПРИМЕЧАНИЕ: Фактическое значение по умолчанию для этого параметра зависит от среды сборки и параметров Varnish.

  • Значение по умолчанию: exec $CC $CFLAGS %w -shared -o %o %s
  • Флаги: must_reload

Команда, используемая для компиляции исходного кода C в загружаемый объект dlopen(3). Можно использовать следующие подстановки:

  • %s: имя файла исходного кода
  • %o: имя выходного файла
  • %w: параметр cc_warnings
  • %d: исходное значение cc_command
  • %D: расширенное значение cc_command
  • %n: рабочий каталог (-n опция)
  • %%: знак процента

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

Подстановки %d и %D позволяют передать значение параметра по умолчанию в оболочку скрипта для выполнения дополнительных обработок.

cc_warnings

ПРИМЕЧАНИЕ: Фактическое значение по умолчанию для этого параметра зависит от среды сборки и параметров Varnish.

  • Значение по умолчанию: -Wall -Werror
  • Флаги: must_reload

Предупреждения, используемые при компиляции исходного кода C с помощью параметра cc_command. По умолчанию VCL компилируется с теми же предупреждениями, что и сам Varnish.

cli_limit
  • Единицы: байты
  • Значение по умолчанию: 48k
  • Минимальное значение: 128b
  • Максимальное значение: 99999999b

Максимальный размер ответа CLI. Если ответ превышает этот лимит, код ответа будет 201 вместо 200, и последняя строка укажет на обрезку.

cli_timeout
  • Единицы: секунды
  • Значение по умолчанию: 60.000
  • Минимальное значение: 0.000

Таймаут для ответов дочернего процесса на запросы CLI.

clock_skew
  • Единицы: секунды
  • Значение по умолчанию: 10
  • Минимальное значение: 0

Сколько несоответствия времени (clock skew) мы готовы принять между бэкендом и нашими часами.

clock_step
  • Единицы: секунды
  • Значение по умолчанию: 1.000
  • Минимальное значение: 0.000

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

connect_timeout
  • Единицы: секунды
  • Значение по умолчанию: 3.500
  • Минимальное значение: 0.000

Таймаут подключения по умолчанию для подключений к бэкендам. Мы пытаемся подключиться к бэкенду не более этого количества секунд, прежде чем отказаться. VCL может переопределить это значение по умолчанию для каждого бэкенда и запроса к бэкенду.

critbit_cooloff
  • Единицы: секунды
  • Значение по умолчанию: 180.000
  • Минимальное значение: 60.000
  • Максимальное значение: 254.000
  • Флаги: wizard

Сколько времени хэшер critbit держит удаленные objhead в списке cooloff.

debug
  • Значение по умолчанию: none

Включает/отключает различные виды отладки.

none

Отключает всю отладку

Используйте префиксы +/- для включения/отключения отдельных битов:

req_state

Двигатель состояния запроса VSL

workspace

Операции с рабочим пространством VSL

waitinglist

События очереди ожидания VSL

syncvsl

Сделать VSL синхронным

hashedge

Крайние случаи в Hash

vclrel

Быстрое освобождение VCL

lurker

Запретить VSL шпиона

esi_chop

Разбить ESI запрос на части

flush_head

Очистка после заголовка http1

vtc_mode

Режим Varnishtest

witness

Выводить записи блокировки WITNESS

vsm_keep

Сохранить файл VSM при перезапуске

slow_acceptor

Замедлить приемник

h2_nocheck

Отключить различные проверки H2

vmod_so_keep

Сохранить скопированные библиотеки VMOD

processors

Процессоры извлечения/доставки

protocol

Отладка протокола

vcl_keep

Сохранить файлы VCL C и так далее

lck

Дополнительная статистика блокировок

default_grace
  • Единицы: секунды
  • Значение по умолчанию: 10с
  • Минимальное значение: 0,000
  • Флаги: obj_sticky

Период по умолчанию. Мы будем доставлять объект в течение этого периода времени после истечения срока его действия, если другой поток пытается получить новую копию.

default_keep
  • Единицы: секунды
  • Значение по умолчанию: 0с
  • Минимальное значение: 0,000
  • Флаги: obj_sticky

Период хранения по умолчанию. Мы будем хранить бесполезный объект в течение этого периода времени, делая его доступным для условных обращений к бэкенду. Это означает, что объект будет удалён из кэша в конце ttl+grace+keep.

default_ttl
  • Единицы: секунды
  • Значение по умолчанию: 2 мин
  • Минимальное значение: 0,000
  • Флаги: obj_sticky

Срок жизни, назначенный объектам, если ни бэкенд, ни код VCL его не присваивают.

experimental
  • Значение по умолчанию: none

Включает/отключает экспериментальные возможности.

none

Отключает все экспериментальные возможности

Используйте префиксы +/- для включения/отключения отдельных битов:

drop_pools

Остановка пулов потоков

feature
  • Значение по умолчанию: +validate_headers

Включает/отключает различные второстепенные возможности.

default

Установить значение по умолчанию

none

Отключает все возможности.

Используйте префиксы +/- для включения/отключения отдельных возможностей:

http2

Включить поддержку протокола HTTP/2.

short_panic

Короткое сообщение об ошибке.

no_coredump

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

https_scheme

Извлечь имя хоста из полного URI в строке запроса HTTP/1, если схема https.

http_date_postel

Допускать несоответствующие заголовкам времени заголовки, такие как Date, Last-Modified, Expires и т.д.

esi_ignore_https

Преобразовать <esi:include src”https://… в http://…

esi_disable_xml_check

Разрешить обработку ESI при не-XML телах ESI

esi_ignore_other_elements

Игнорировать ошибки синтаксиса XML в телах ESI.

esi_remove_bom

Игнорировать BOM UTF-8 в телах ESI.

esi_include_onerror

Обрабатывать атрибут onerror тегов <esi:include>.

wait_silo

Дождаться полной загрузки постоянных силосов перед обработкой запросов.

validate_headers

Проверить все операции установки заголовков на соответствие RFC7230.

busy_stats_rate

Принудительно выполнить busy workers в соответствии с thread_stats_rate.

trace

Включить трассировку VCL по умолчанию (включить (be)req.trace). Требуется для трассировки vcl_init / vcl_fini

fetch_chunksize
  • Единицы: байты
  • Значение по умолчанию: 16КБ
  • Минимальное значение: 4КБ
  • Флаги: experimental

Размер пакета по умолчанию, используемый извлекателем. Он должен быть больше, чем большинство объектов с коротким TTL. Внутренние ограничения модуля storage_file делают увеличение свыше 128 КБ сомнительным.

fetch_maxchunksize
  • Единицы: байты
  • Значение по умолчанию: 0,25ГБ
  • Минимальное значение: 64КБ
  • Флаги: experimental

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

first_byte_timeout
  • Единицы: секунды
  • Значение по умолчанию: 60,000
  • Минимальное значение: 0,000

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

gzip_buffer
  • Единицы: байты
  • Значение по умолчанию: 32КБ
  • Минимальное значение: 2КБ
  • Флаги: experimental

Размер буфера malloc, используемого для обработки gzip. Эти буферы используются для данных в пути, например, данных, распакованных gzip, отправляемых клиенту. Слишком маленький размер приводит к большему количеству накладных расходов, записи в сокеты и т.д., слишком большой размер, вероятно, просто ненужное использование памяти.

gzip_level
  • Значение по умолчанию: 6
  • Минимальное значение: 0
  • Максимальное значение: 9

Уровень сжатия gzip: 0=отладка, 1=быстрый, 9=лучший

gzip_memlevel
  • Значение по умолчанию: 8
  • Минимальное значение: 1
  • Максимальное значение: 9

Уровень памяти gzip 1=медленный/минимальное, 9=быстрый/максимальное сжатие. Влияние на память 1=1КБ, 2=2КБ, … 9=256КБ.

h2_header_table_size
  • Единицы: байты
  • Значение по умолчанию: 4КБ
  • Минимальное значение: 0b

Размер таблицы заголовков HTTP2. Это размер, который будет использоваться для динамической таблицы декодирования HPACK.

h2_initial_window_size
  • Единицы: байты
  • Значение по умолчанию: 65535б
  • Минимальное значение: 65535б
  • Максимальное значение: 2147483647б

Начальный размер окна управления потоком HTTP2.

h2_max_concurrent_streams
  • Единицы: потоки
  • Значение по умолчанию: 100
  • Минимальное значение: 0

Максимальное количество одновременных потоков HTTP2. Это количество запросов, которые могут быть активными одновременно для одного подключения HTTP2.

h2_max_frame_size
  • Единицы: байты
  • Значение по умолчанию: 16КБ
  • Минимальное значение: 16КБ
  • Максимальное значение: 16777215б

Максимальный размер полезной нагрузки на фрейм HTTP2, который мы готовы принять.

h2_max_header_list_size
  • Единицы: байты
  • Значение по умолчанию: 2147483647б
  • Минимальное значение: 0б

Максимальный размер нескомпрессированного списка заголовков HTTP2.

h2_rx_window_increment
  • Единицы: байты
  • Значение по умолчанию: 1МБ
  • Минимальное значение: 1МБ
  • Максимальное значение: 1ГБ
  • Флаги: wizard

Приращения окна приема HTTP2. Размер кредитов, которые мы отправляем в фреймах WINDOW_UPDATE. Воздействует только на входящие тела запросов (т.е. POST, PUT и т.д.).

h2_rx_window_low_water
  • Единицы: байты
  • Значение по умолчанию: 10МБ
  • Минимальное значение: 65535б
  • Максимальное значение: 1ГБ
  • Флаги: wizard

Нижняя граница окна приема HTTP2. Мы пытаемся поддерживать окно как минимум таким большим. Воздействует только на входящие тела запросов (т.е. POST, PUT и т.д.).

h2_rxbuf_storage
  • Значение по умолчанию: Временное
  • Флаги: must_restart

Имя хранилища, из которого HTTP/2 должны выделять буферы приема.

http1_iovs
  • Единицы: структура iovec (=16 байт)
  • Значение по умолчанию: 64
  • Минимальное значение: 5
  • Максимальное значение: 1024
  • Флаги: wizard

Количество векторов ввода-вывода для передачи протокола HTTP1. Заголовок HTTP1 требует 7 + 2 на каждый HTTP заголовок. Выделяются из workspace_thread. Этот параметр влияет только на векторы ввода-вывода, используемые для доставки клиенту. Для обращений к бэкенду выделяется максимальное количество векторов ввода-вывода (до IOV_MAX) из доступной памяти workspace_thread.

http_gzip_support
  • Единицы: bool
  • Значение по умолчанию: включено
Включает поддержку gzip. При включении Varnish запрашивает сжатые объекты от бэкенда и хранит их в сжатом виде. Если клиент не поддерживает сжатие gzip, Varnish будет распаковывать сжатые объекты по требованию. Varnish также перепишет заголовок Accept-Encoding клиентов, указав поддержку gzip:

Accept-Encoding: gzip

У клиентов, не поддерживающих gzip, заголовок Accept-Encoding будет удален. Более подробную информацию о реализации gzip см. в главе о gzip в справке Varnish.

При отключенной поддержке gzip переменные beresp.do_gzip и beresp.do_gunzip не имеют никакого эффекта в VCL.

http_max_hdr
  • Единицы: строки заголовка
  • Значение по умолчанию: 64
  • Минимальное значение: 32
  • Максимальное значение: 65535

Максимальное количество строк HTTP заголовков, которые мы разрешаем в {req|resp|bereq|beresp}.http (obj.http автоматически настраивается на точное количество заголовков). Недорого, ~20 байт, в плане рабочей памяти. Обратите внимание, что первая строка занимает пять строк заголовков.

http_range_support
  • Единицы: bool
  • Значение по умолчанию: включено

Включить поддержку заголовков HTTP Range.

http_req_hdr_len
  • Единицы: байты
  • Значение по умолчанию: 8k
  • Минимальное значение: 40b

Максимальная длина заголовка запроса HTTP-клиента, которую мы будем допускать. Ограничение включает в себя продолжение строк.

http_req_size
  • Единицы: байты
  • Значение по умолчанию: 32k
  • Минимальное значение: 0.25k

Максимальное количество байтов запроса HTTP-клиента, с которым мы будем работать. Это ограничение на все байты до двойной пустой строки, которая завершает запрос HTTP. Память для запроса выделяется из рабочего пространства клиента (параметр: workspace_client), и этот параметр ограничивает, сколько места в нём может занимать запрос.

http_resp_hdr_len
  • Единицы: байты
  • Значение по умолчанию: 8k
  • Минимальное значение: 40b

Максимальная длина заголовка ответа HTTP-бекенда, которую мы будем допускать. Ограничение включает в себя продолжение строк.

http_resp_size
  • Единицы: байты
  • Значение по умолчанию: 32k
  • Минимальное значение: 0.25k

Максимальное количество байтов ответа HTTP-бекенда, с которым мы будем работать. Это ограничение на все байты до двойной пустой строки, которая завершает ответ HTTP. Память для ответа выделяется из рабочего пространства бэкенда (параметр: workspace_backend), и этот параметр ограничивает, сколько места в нём может занимать ответ.

idle_send_timeout
  • Единицы: секунды
  • Значение по умолчанию: 60.000
  • Минимальное значение: 0.000
  • Флаги: отложенный

Таймаут отправки отдельных фрагментов данных по клиентским подключениям. Может быть продлён, если применяется «send_timeout».

При достижении этого таймаута сессия закрывается.

См. страницу руководства для setsockopt(2) или socket(7) в SO_SNDTIMEO, для получения дополнительной информации.

listen_depth
  • Единицы: подключения
  • Значение по умолчанию: 1024
  • Минимальное значение: 0
  • Флаги: необходимо_перезапуск

Глубина очереди слушания.

lru_interval
  • Единицы: секунды
  • Значение по умолчанию: 2.000
  • Минимальное значение: 0.000
  • Флаги: экспериментальный

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

max_esi_depth
  • Единицы: уровни
  • Значение по умолчанию: 5
  • Минимальное значение: 0

Максимальная глубина обработки esi:include.

max_restarts
  • Единицы: перезапуски
  • Значение по умолчанию: 4
  • Минимальное значение: 0

Максимальное количество перезапусков запроса.

max_retries
  • Единицы: попытки
  • Значение по умолчанию: 4
  • Минимальное значение: 0

Максимальное количество попыток повторного выполнения запроса к бэкенду.

max_vcl
  • Значение по умолчанию: 100
  • Минимальное значение: 0

Порог загруженных программ VCL. (Метки VCL не учитываются.) Параметр max_vcl_handling определяет поведение.

max_vcl_handling
  • Значение по умолчанию: 1
  • Минимальное значение: 0
  • Максимальное значение: 2

Поведение при попытке превысить максимальное значение загруженных VCL.

  • 0 - Игнорировать параметр max_vcl.
  • 1 - Вывести предупреждение.
  • 2 - Отказать в загрузке VCL.
nuke_limit
  • Единицы: выделения
  • Значение по умолчанию: 50
  • Минимальное значение: 0
  • Флаги: экспериментальный

Максимальное количество объектов, которые мы пытаемся удалить, чтобы освободить место для тела объекта.

pcre2_depth_limit
  • Значение по умолчанию: 20
  • Минимальное значение: 1

Ограничение глубины рекурсии для внутренней логики сопоставления в pcre2_match().

(См.: pcre2_set_depth_limit() в документации pcre2.)

Это устанавливает верхний предел объема стека, используемого PCRE2 для определённых классов регулярных выражений.

Мы установили значение по умолчанию низким, чтобы предотвратить сбои, ценой возможных неудач в сопоставлении regexp.

Неудачные сопоставления отображаются в журнале как сообщения VCL_Error.

pcre2_jit_compilation
  • Единицы: bool
  • Значение по умолчанию: включено

Использовать компилятор JIT pcre2, если он доступен.

pcre2_match_limit
  • Значение по умолчанию: 10000
  • Минимальное значение: 1

Ограничение количества вызовов внутренней логики сопоставления в pcre2_match().

(См.: pcre2_set_match_limit() в документации pcre2.)

Этот параметр ограничивает, сколько процессорного времени может занимать сопоставление регулярных выражений.

ping_interval
  • Единицы: секунды
  • Значение по умолчанию: 3
  • Минимальное значение: 0
  • Флаги: необходимо_перезапуск

Интервал между ping-запросами от родителя к дочернему процессу. Ноль отключит ping-запросы полностью, что позволяет подключить отладчик к дочернему процессу.

pipe_sess_max
  • Единицы: подключения
  • Значение по умолчанию: 0
  • Минимальное значение: 0

Максимальное количество сессий, выделенных для транзакций pipe.

pipe_timeout
  • Единицы: секунды
  • Значение по умолчанию: 60.000
  • Минимальное значение: 0.000

Таймаут бездействия для сессий PIPE. Если в обоих направлениях в течение этого количества секунд ничего не получено, сессия закрывается.

pool_req
  • Значение по умолчанию: 10,100,10

Параметры для пула запросов на рабочем процессе.

Три числа:

min_pool

минимальный размер пула.

max_pool

максимальный размер пула.

max_age

максимальный возраст элемента.

pool_sess
  • Значение по умолчанию: 10,100,10

Параметры для пула сессий на рабочем процессе.

Три числа:

min_pool

минимальный размер пула.

max_pool

максимальный размер пула.

max_age

максимальный возраст элемента.

pool_vbo
  • Значение по умолчанию: 10,100,10

Параметры для пула извлечения объектов бэкенда.

Три числа:

min_pool

минимальный размер пула.

max_pool

максимальный размер пула.

max_age

максимальный возраст элемента.

prefer_ipv6
  • Единицы: bool
  • Значение по умолчанию: выключено

Указывать использование адреса IPv6 при подключении к бэкендам, которые имеют как IPv4, так и IPv6 адреса.

rush_exponent
  • Единицы: запросы на запрос
  • Значение по умолчанию: 3
  • Минимальное значение: 2
  • Флаги: экспериментальный

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

send_timeout
  • Единицы: секунды
  • Значение по умолчанию: 600.000
  • Минимальное значение: 0.000
  • Флаги: отложенный

Общий таймаут для обычных ответов HTTP1. Не применяется к некоторым внутренне генерируемым ошибкам и режиму pipe.

Если таймаут ‘idle_send_timeout’ срабатывает при отправке ответа HTTP1, таймаут продлевается, если общее время, затраченное на отправку ответа целиком, не превышает это значение в секундах.

При достижении этого таймаута сессия закрывается.

shortlived
  • Единицы: секунды
  • Значение по умолчанию: 10.000
  • Минимальное значение: 0.000

Объекты, созданные с (ttl+grace+keep), короче этого значения, всегда помещаются во временное хранилище.

sigsegv_handler
  • Единицы: bool
  • Значение по умолчанию: включено
  • Флаги: необходимо_перезапуск

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

startup_timeout
  • Единицы: секунды
  • Значение по умолчанию: 0.000
  • Минимальное значение: 0.000

Альтернативный таймаут для начальной загрузки процесса обработчика. Если cli_timeout больше, чем startup_timeout, используется cli_timeout.

syslog_cli_traffic
  • Единицы: bool
  • Значение по умолчанию: включено

Записывать весь трафик CLI в syslog (LOG_INFO).

tcp_fastopen

Примечание: Этот параметр зависит от функции, которая не доступна на всех платформах.

  • Единицы: bool
  • Значение по умолчанию: выключено
  • Флаги: необходимо_перезапуск

Включить расширение TCP Fast Open.

tcp_keepalive_intvl

Примечание: Этот параметр зависит от функции, которая не доступна на всех платформах.

  • Единицы: секунды
  • Значение по умолчанию: зависит от платформы
  • Минимальное значение: 1.000
  • Максимальное значение: 100.000
  • Флаги: экспериментальный

Количество секунд между зондированием TCP keep-alive. Игнорируется для Unix доменных сокетов.

tcp_keepalive_probes

Примечание: Этот параметр зависит от функции, которая не доступна на всех платформах.

  • Единицы: зонды
  • По умолчанию: зависит от платформы
  • Минимальное значение: 1
  • Максимальное значение: 100
  • Флаги: экспериментальный

Максимальное количество зондов TCP keep-alive, которые будут отправлены перед отказом и закрытием соединения, если от другого конца не получен ответ. Игнорируется для сокетов Unix домена.

tcp_keepalive_time

Примечание: Этот параметр зависит от функции, которая не доступна на всех платформах.

  • Единицы: секунды
  • По умолчанию: зависит от платформы
  • Минимальное значение: 1.000
  • Максимальное значение: 7200.000
  • Флаги: экспериментальный

Количество секунд, в течение которых соединение должно быть бездействующим, прежде чем TCP начнет отправлять зонды keep-alive. Игнорируется для сокетов Unix домена.

thread_pool_add_delay
  • Единицы: секунды
  • По умолчанию: 0.000
  • Минимальное значение: 0.000
  • Флаги: экспериментальный

Задержка, ожидаемая после создания потока.

Некоторые (ошибочные) системы могут потребовать небольшую (доли секунды) задержку между созданием потоков. Установите это значение в несколько миллисекунд, если вы видите, что счетчик «threads_failed» увеличивается слишком сильно.

Установка слишком большого значения приводит к недостаточному количеству потоков-работников.

thread_pool_destroy_delay
  • Единицы: секунды
  • По умолчанию: 1.000
  • Минимальное значение: 0.010
  • Флаги: отложенный, экспериментальный

Задержка, ожидаемая после уничтожения потока.

Этот параметр управляет затуханием пулов потоков при бездействии.

thread_pool_fail_delay
  • Единицы: секунды
  • По умолчанию: 0.200
  • Минимальное значение: 0.010
  • Флаги: экспериментальный

Минимальная задержка после неудачного создания потока перед следующей попыткой.

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

Если проблемы возникают с созданием потоков, проверьте, что thread_pool_max не слишком высок.

Также может помочь увеличить thread_pool_timeout и thread_pool_min, чтобы снизить частоту уничтожения и последующего создания потоков.

thread_pool_max
  • Единицы: потоки
  • По умолчанию: 5000
  • Минимальное значение: thread_pool_min
  • Флаги: отложенный

Максимальное количество потоков-работников в каждом пуле.

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

thread_pool_min
  • Единицы: потоки
  • По умолчанию: 100
  • Минимальное значение: 5
  • Максимальное значение: thread_pool_max
  • Флаги: отложенный

Минимальное количество потоков-работников в каждом пуле.

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

Технический минимум — 5 потоков, но этот параметр настоятельно рекомендуется устанавливать не менее чем 10.

thread_pool_reserve
  • Единицы: потоки
  • По умолчанию: 0 (автонастройка: 5% от thread_pool_min)
  • Максимальное значение: 95% от thread_pool_min
  • Флаги: отложенный

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

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

Эффективное значение составляет не менее 5 (количество внутренних классов приоритета), независимо от этого параметра.

thread_pool_stack
  • Единицы: байты
  • По умолчанию: 80кб
  • Минимальное значение: sysconf(_SC_THREAD_STACK_MIN)
  • Флаги: отложенный

Размер стека потоков-работников. Ядро, скорее всего, округлить его до кратного 4кб (или любого другого значения page_size).

Необходимый размер стека, в первую очередь, определяется глубиной вызываемой цепочки. Наиболее распространенные соответствующие определяющие факторы в коде ядра varnish — это сжатие/распаковка GZIP, обработка ESI и сопоставление регулярных выражений. VMOD также могут потребовать значительных дополнительных стеков. Глубина вложенности подпрограмм VCL — еще один фактор, хотя обычно не доминирующий.

Размер стека относится к каждому потоку, поэтому максимальное общее количество памяти, требуемое для стеков потоков-работников, находится в порядке size = thread_pools x thread_pool_max x thread_pool_stack.

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

С другой стороны, thread_pool_stack должен быть достаточно большим во всех случаях, в противном случае varnish упадет из-за переполнения стека. Обычно переполнение стека проявляется как ошибка сегментации (также известная как segfault/SIGSEGV) с адресом ошибки, находящимся вблизи указателя стека (sp).

Если использование стека невозможно уменьшить, thread_pool_stack необходимо увеличить при возникновении переполнения стека. Рекомендуется увеличивать его с шагом 150%-200%, пока переполнения стека не прекратятся.

thread_pool_timeout
  • Единицы: секунды
  • По умолчанию: 300.000
  • Минимальное значение: 10.000
  • Флаги: отложенный, экспериментальный

Порог бездействия потока.

Потоки, превышающие thread_pool_min, которые были бездейственными в течение этого времени, будут уничтожены.

thread_pool_watchdog
  • Единицы: секунды
  • По умолчанию: 60.000
  • Минимальное значение: 0.100
  • Флаги: экспериментальный

Таймер контроля заблокированных очередей потоков.

Если в течение этого времени не было выпущено ни одной очереди задач, процесс-работник вызывает ошибку.

thread_pools
  • Единицы: пулы
  • По умолчанию: 2
  • Минимальное значение: 1
  • Максимальное значение: 32
  • Флаги: отложенный, экспериментальный

Количество пулов потоков-работников.

Увеличение количества пулов потоков-работников уменьшает конфликт блокировок. Каждый пул потоков-работников также имеет поток, принимающий новые подключения, поэтому для очень высоких скоростей входящих новых подключений на системах с множеством ядер, может потребоваться увеличение пулов потоков-работников.

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

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

thread_queue_limit
  • Единицы: запросы
  • По умолчанию: 20
  • Минимальное значение: 0
  • Флаги: экспериментальный

Длина очереди запросов на поток.

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

thread_stats_rate
  • Единицы: запросы
  • По умолчанию: 10
  • Минимальное значение: 0
  • Флаги: экспериментальный

Потоки-работники накапливают статистику и записывают её в глобальные счётчики статистики, если блокировка свободна при завершении работы (запрос/получение и т.п.). Этот параметр определяет максимальное количество задач, которые поток-работник может обработать, прежде чем он будет вынужден записать накопленную статистику в глобальные счётчики.

timeout_idle
  • Единицы: секунды
  • По умолчанию: 5.000
  • Минимальное значение: 0.000

Тайм-аут бездействия для подключений клиентов.

Подключение считается бездействующим, пока не получены все заголовки запроса.

Этот параметр особенно важен для HTTP1 keepalive-соединений, которые закрываются, если следующий запрос не поступает до истечения этого таймаута.

timeout_linger
  • Единицы: секунды
  • По умолчанию: 0.050
  • Минимальное значение: 0.000
  • Флаги: экспериментальный

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

transit_buffer
  • Единицы: байты
  • По умолчанию: 0б
  • Минимальное значение: 0б

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

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

Этот параметр является значением по умолчанию для переменной VCL beresp.transit_buffer, которая может использоваться для управления буфером транзита по каждому запросу к бэкенду.

vary_notice
  • Единицы: варианты
  • По умолчанию: 10
  • Минимальное значение: 1

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

vcc_allow_inline_c

Устаревший псевдоним параметра vcc_feature.

vcc_err_unref

Устаревший псевдоним параметра vcc_feature.

vcc_feature
  • По умолчанию: +err_unref,+unsafe_path

Включение/выключение различных функций VCC.

default

Установить значение по умолчанию

none

Отключить все функции.

Используйте префикс +/- для включения/отключения отдельных функций:

err_unref

Неинициализированные объекты VCL приводят к ошибке.

allow_inline_c

Разрешить встраивание кода C в VCL.

unsafe_path

Разрешить «/» в путях vmod и include. Разрешить «import … from …».

vcc_unsafe_path

Устаревшее псевдоним для параметра vcc_feature.

vcl_cooldown
  • Единицы: секунды
  • Значение по умолчанию: 600.000
  • Минимальное значение: 1.000

Время, в течение которого VCL сохраняется в тёплом состоянии после замены активного VCL (разрешение приблизительно 30 секунд).

vcl_path

Примечание: фактическое значение по умолчанию для этого параметра зависит от среды разработки и параметров Varnish.

  • Значение по умолчанию: ${sysconfdir}/varnish:${datadir}/varnish/vcl

Директория (или список директорий, разделённых двоеточием), из которой следует искать относительные имена файлов VCL (vcl.load и include). По умолчанию Varnish ищет файлы VCL как в системной конфигурации, так и в общих каталогах данных, чтобы пакеты могли размещать свои файлы VCL в стандартном месте, где относительные включения будут работать.

vmod_path

Примечание: фактическое значение по умолчанию для этого параметра зависит от среды разработки и параметров Varnish.

  • Значение по умолчанию: ${libdir}/varnish/vmods

Директория (или список директорий, разделённых двоеточием), где хранятся VMOD.

vsl_buffer
  • Единицы: байты
  • Значение по умолчанию: 16k
  • Минимальное значение: vsl_reclen + 12 байт

Количество байт (рабочей области req-/backend-), выделенных для буферизации записей VSL. При изменении этого параметра, скорее всего, потребуется изменить workspace_client и workspace_backend на ту же величину.

Слишком большое значение затрачивает память, а слишком маленькое приведёт к большему количеству сбросов VSL и, вероятно, к увеличению блокировки mutex VSL.

vsl_mask
  • Значение по умолчанию: -Debug,-ObjProtocol,-ObjStatus,-ObjReason,-ObjHeader,-ExpKill,-WorkThread,-Hash,-VfpAcct,-H2RxHdr,-H2RxBody,-H2TxHdr,-H2TxBody,-VdpAcct

Маска для отдельных сообщений VSL, которые не должны регистрироваться.

по умолчанию

Устанавливает значение по умолчанию

Используйте префикс +/- перед именем тега VSL, чтобы отменить/применить маску для отдельных сообщений VSL.

vsl_reclen
  • Единицы: байты
  • Значение по умолчанию: 255b
  • Минимальное значение: 16b
  • Максимальное значение: vsl_buffer - 12 байт

Максимальное количество байт в записи журнала SHM.

vsl_space
  • Единицы: байты
  • Значение по умолчанию: 80M
  • Минимальное значение: 1M
  • Максимальное значение: 4ГБ
  • Флаги: must_restart

Объем памяти для буфера fifo VSL в сегменте памяти VSM. Если значение слишком мало, varnish{ncsa|log} и т. п. не смогут справляться с нагрузкой. Слишком большое значение просто затрачивает ресурсы памяти.

vsm_free_cooldown
  • Единицы: секунды
  • Значение по умолчанию: 60.000
  • Минимальное значение: 10.000
  • Максимальное значение: 600.000

Время, в течение которого память VSM сохраняется в тёплом состоянии после освобождения (разрешение приблизительно 2 секунды).

workspace_backend
  • Единицы: байты
  • Значение по умолчанию: 96k
  • Минимальное значение: 1k
  • Флаги: delayed

Объём рабочей области протокола HTTP для обратного сервера HTTP req/resp. Если больше 4k, используйте кратное 4k для эффективности VM.

workspace_client
  • Единицы: байты
  • Значение по умолчанию: 96k
  • Минимальное значение: 9k
  • Флаги: delayed

Объём рабочей области протокола HTTP для клиентов HTTP req/resp. Используйте кратное 4k для эффективности VM. Для соответствия HTTP/2 это значение должно быть как минимум 20k, чтобы получать фреймы полного размера (=16k) от клиента. Это обычно происходит только в POST/PUT телах. Для других типов трафика меньшие значения работают нормально.

workspace_session
  • Единицы: байты
  • Значение по умолчанию: 0.75k
  • Минимальное значение: 384b
  • Флаги: delayed

Размер выделения для структуры сеанса и рабочей области. Рабочая область в основном используется для адресов TCP-соединений. Если больше 4k, используйте кратное 4k для эффективности VM.

workspace_thread
  • Единицы: байты
  • Значение по умолчанию: 2k
  • Минимальное значение: 0.25k
  • Максимальное значение: 8k
  • Флаги: delayed

Количество байт дополнительной рабочей области на поток. Эта рабочая область используется для определённых временных структур данных во время работы потока. Одно из применений – для векторов ввода-вывода, используемых при доставке. Установка слишком малого значения может увеличить количество вызовов writev(), а установка слишком большого значения просто тратит место. ~0.1k + UIO_MAXIOV * sizeof(struct iovec) (обычно = ~16k для 64-битных систем) считается максимальным разумным значением в любых известных обстоятельствах (исключая экзотическое использование vmod).

КОДЫ ВЫХОДА

Varnish и связанные инструменты в большинстве случаев завершают работу с одним из следующих кодов:

  • 0 OK
  • 1 Некоторая ошибка, которая может зависеть от системы и/или быть временной
  • 2 Серьёзная ошибка конфигурации/параметра — повторная попытка с той же конфигурацией/параметрами, скорее всего, бесполезна

Процесс varnishd может также объединить свой код выхода

  • с 0x20 , если процесс varnishd завершился неудачно,
  • с 0x40 , если процесс varnishd был прерван сигналом и
  • с 0x80 , если произошёл дамп ядра.

СМОТРИТЕ ТАКЖЕ

  • varnishlog
  • varnishhist
  • varnishncsa
  • varnishstat
  • varnishtop
  • varnish-cli
  • VCL

ИСТОРИЯ

Демон varnishd был разработан Поулом-Хеннингом Кампом в сотрудничестве с Verdens Gang AS и Varnish Software.

Эта страница руководства была написана Дагом-Эрлингом Сморгравом с обновлением Стигом Сандбеком Матисеном <ssm@debian.org>, Нильсом Гороллом и другими.

АВТОРСКИЕ ПРАВА

Данный документ лицензирован по той же лицензии, что и сам Varnish. Подробнее см. в файле LICENCE.

  • Авторские права (c) 2007-2015 Varnish Software AS

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/reference/varnishd.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API