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 backendsThe 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 и связанные инструменты в большинстве случаев завершают работу с одним из следующих кодов:
0OK1Некоторая ошибка, которая может зависеть от системы и/или быть временной2Серьёзная ошибка конфигурации/параметра — повторная попытка с той же конфигурацией/параметрами, скорее всего, бесполезна
Процесс varnishd может также объединить свой код выхода
- с
0x20, если процессvarnishdзавершился неудачно, - с
0x40, если процессvarnishdбыл прерван сигналом и - с
0x80, если произошёл дамп ядра.
СМОТРИТЕ ТАКЖЕ
ИСТОРИЯ
Демон 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