VSL
Varnish Общий Лог Памяти
- Руководство:
-
7
ОБЗОР
В этом документе описывается формат и содержание всех тегов логгирования Varnish общей памяти. Эти теги используются средствами логгирования varnishlog(1), varnishtop(1) и т. д., поставляемыми с Varnish.
Теги VSL
- BackendClose - Закрытие подключения к бэкенду
-
Регистрируется при закрытии подключения к бэкенду.
Формат:
%d %s %s [ %s ] | | | | | | | +- Optional reason | | +------ "close" or "recycle" | +--------- Backend display name +------------ Connection file descriptor
- BackendOpen - Открытие подключения к бэкенду
-
Регистрируется при открытии нового подключения к бэкенду.
Формат:
%d %s %s %s %s %s %s | | | | | | | | | | | | | +- "connect" or "reuse" | | | | | +---- Local port | | | | +------- Local address | | | +---------- Remote port | | +------------- Remote address | +---------------- Backend display name +------------------- Connection file descriptor
- Backend_health - Проверка работоспособности бэкенда
-
Результат проверки работоспособности бэкенда.
Формат:
%s %s %s %s %u %u %u %f %f %s | | | | | | | | | | | | | | | | | | | +- Probe HTTP response / error information | | | | | | | | +---- Average response time | | | | | | | +------- Response time | | | | | | +---------- Probe window size | | | | | +------------- Probe threshold level | | | | +---------------- Number of good probes in window | | | +------------------- Probe window bits | | +---------------------- "healthy" or "sick" | +------------------------- "Back", "Still" or "Went" +---------------------------- Backend name
Биты окна проверки:
'-': Could not connect '4': Good IPv4 '6': Good IPv6 'U': Good UNIX 'x': Error Xmit 'X': Good Xmit 'r': Error Recv 'R': Good Recv 'H': Happy
Когда бэкенд только создан, биты окна для слотов проверки работоспособности, которые ещё не были запущены, отображаются как «-», как неудачные подключения.
- Begin - Отметка начала транзакции VXID
-
Первый запис транзакции VXID.
Формат:
%s %d %s [%u] | | | | | | | +- Task sub-level | | +----- Reason | +-------- Parent vxid +----------- Type ("sess", "req" or "bereq") - BereqAcct - Учет запросов бэкенда
-
Содержит счетчики байтов из обработки запросов бэкенда.
Формат:
%d %d %d %d %d %d | | | | | | | | | | | +- Total bytes received | | | | +---- Body bytes received | | | +------- Header bytes received | | +---------- Total bytes transmitted | +------------- Body bytes transmitted +---------------- Header bytes transmitted
- BereqHeader - Заголовок запроса бэкенда
-
Содержимое HTTP-заголовка.
Формат:
%s: %s | | | +- Header value +----- Header name
ПРИМЕЧАНИЕ: поля HTTP-заголовка — свободные записи и не состоят строго из 2 полей. Доступ к определённому заголовку с префиксной нотацией помогает рассматривать значение заголовка как одну строку.
- BereqMethod - Метод запроса бэкенда
-
Используемый HTTP-метод запроса.
- BereqProtocol - Протокол запроса бэкенда
-
Информация о версии HTTP-протокола.
- BereqURL - URL запроса бэкенда
-
URL HTTP-запроса.
- BereqUnset - Неустановленный заголовок запроса бэкенда
-
Содержимое HTTP-заголовка.
Формат:
%s: %s | | | +- Header value +----- Header name
ПРИМЕЧАНИЕ: поля HTTP-заголовка — свободные записи и не состоят строго из 2 полей. Доступ к определённому заголовку с префиксной нотацией помогает рассматривать значение заголовка как одну строку.
- BerespHeader - Заголовок ответа бэкенда
-
Содержимое HTTP-заголовка.
Формат:
%s: %s | | | +- Header value +----- Header name
ПРИМЕЧАНИЕ: поля HTTP-заголовка — свободные записи и не состоят строго из 2 полей. Доступ к определённому заголовку с префиксной нотацией помогает рассматривать значение заголовка как одну строку.
- BerespProtocol - Протокол ответа бэкенда
-
Информация о версии HTTP-протокола.
- BerespReason - Причина ответа бэкенда
-
Строка причины HTTP-ответа.
- BerespStatus - Код состояния ответа бэкенда
-
Код состояния HTTP-ответа.
- BerespUnset - Неустановленный заголовок ответа бэкенда
-
Содержимое HTTP-заголовка.
Формат:
%s: %s | | | +- Header value +----- Header name
ПРИМЕЧАНИЕ: поля HTTP-заголовка — свободные записи и не состоят строго из 2 полей. Доступ к определённому заголовку с префиксной нотацией помогает рассматривать значение заголовка как одну строку.
- BogoHeader - Полученный некорректный HTTP-заголовок
-
Содержит первые 20 символов полученных HTTP-заголовков, которые не удалось обработать. Применяется к req.http и beresp.http.
- CLI - Взаимодействие CLI
-
Взаимодействие CLI между varnishd master и дочерним процессом.
- Debug - Сообщения отладки
-
Сообщения отладки обычно можно игнорировать, но иногда они полезны при устранении неполадок. Большинство сообщений отладки необходимо явно включить с параметрами.
Сообщения отладки могут быть добавлены, изменены или удалены без предварительного уведомления и не должны считаться стабильными.
ПРИМЕЧАНИЕ: Эта запись лога по умолчанию скрыта.
- ESI_xmlerror - Ошибка или предупреждение парсера ESI
-
Во время парсинга объекта ESI была сгенерирована ошибка или предупреждение. Запись лога описывает возникшую проблему.
- End - Отметка окончания транзакции VXID
-
Последняя запись транзакции VXID.
- Error - Сообщения об ошибках
-
Сообщения об ошибках, которые, вероятно, вам нужно знать.
- ExpBan - Объект удалён из-за запрета
-
Регистрирует VXID, когда объект заблокирован.
- ExpKill - Событие истечения срока действия объекта
-
Регистрирует события, связанные с истечением срока действия объекта. События:
- EXP_Rearm
-
Регистрируется при изменении срока действия объекта.
- EXP_Inbox
-
Регистрируется, когда поток истечения срока действия выбирает объект из ящика входящих сообщений для обработки.
- EXP_Kill
-
Регистрируется, когда поток истечения срока действия уничтожает объект из ящика входящих сообщений.
- EXP_When
-
Регистрируется, когда поток истечения срока действия перемещает объект в кучу.
- EXP_Expired
-
Регистрируется, когда поток истечения срока действия истекает для объекта.
- LRU_Cand
-
Регистрируется, когда объект оценивается для принудительного истечения срока действия LRU.
- LRU
-
Регистрируется, когда объект принудительно истекает из-за LRU.
- LRU_Fail
-
Регистрируется, когда подходящий кандидат для принудительного истечения срока действия LRU не найден.
Формат:
EXP_Rearm p=%p E=%f e=%f f=0x%x EXP_Inbox p=%p e=%f f=0x%x EXP_Kill p=%p e=%f f=0x%x EXP_When p=%p e=%f f=0x%x EXP_Expired x=%u t=%f LRU_Cand p=%p f=0x%x r=%d LRU x=%u LRU_Fail Legend: p=%p Objcore pointer t=%f Remaining TTL (s) e=%f Expiry time (unix epoch) E=%f Old expiry time (unix epoch) f=0x%x Objcore flags r=%d Objcore refcount x=%u Object VXID
- FetchError - Ошибка при извлечении объекта
-
Регистрирует сообщение об ошибке при неудачной операции извлечения.
Сообщения об ошибках должны быть понятны, но ошибки класса http соединения (HTC) отображаются этими символами:
- junk (-5): Получены неожиданные данные
- close (-4): Подключение закрыто
- timeout (-3): Истекло время ожидания
- overflow (-2): Буфер/рабочая область слишком мала
- eof (-1): Неожиданный конец ввода
- empty (0): Пустой ответ
- more (1): Требуются дополнительные данные
- complete (2): Данные завершены (без ошибки)
- idle (3): Подключение было закрыто во время ожидания
Обратите внимание, что некоторые ошибки HTC никогда не генерируются.
- Fetch_Body - Тело, полученное от бэкенда
-
Готово извлечь тело из бэкенда.
Формат:
%d %s %s | | | | | +---- 'stream' or '-' | +------- Text description of body fetch mode +---------- Body fetch mode
- Filters - Фильтры тела
-
Список фильтров, примененных к телу
- Gzip - Сжатие/распаковка Gzip объекта
-
Запись Gzip генерируется для каждого случая сжатия или распаковки gzip. В худшем случае, транзакция ESI, хранящаяся в сжатых gzip объектах, но передающаяся в виде распакованных gzip, может генерировать много таких записей.
Формат:
%c %c %c %d %d %d %d %d | | | | | | | | | | | | | | | +- Bit length of compressed data | | | | | | +---- Bit location of 'last' bit | | | | | +------- Bit location of first deflate block | | | | +---------- Bytes output | | | +------------- Bytes input | | +---------------- 'E': ESI, '-': Plain object | +------------------- 'F': Fetch, 'D': Deliver +---------------------- 'G': Gzip, 'U': Gunzip, 'u': Gunzip-test
Примеры:
U F E 182 159 80 80 1392 G F E 159 173 80 1304 1314
- H2RxBody - Полученное тело кадра HTTP2
-
Двоичные данные
- H2RxHdr - Полученный заголовок кадра HTTP2
-
Двоичные данные
- H2TxBody - Переданное тело кадра HTTP2
-
Двоичные данные
- H2TxHdr - Переданный заголовок кадра HTTP2
-
Двоичные данные
- Hash - Значение, добавленное в хеш
-
Это значение было добавлено в хеш поиска объекта.
ПРИМЕЧАНИЕ: Эта запись лога по умолчанию скрыта.
- Hit - Попадание в кэш объекта
-
Объект найден в кэше.
Формат:
%u %f %f %f [%u [%u]] | | | | | | | | | | | +- Content length | | | | +----- Fetched so far | | | +--------- Keep period | | +------------ Grace period | +--------------- Remaining TTL +------------------ VXID of the object
- HitMiss - Попадание в кэш для пропущенного объекта.
-
Объект hit-for-miss найден в кэше.
Формат:
%u %f | | | +- Remaining TTL +---- VXID of the object
- HitPass - Попадание в кэш для пропущенного объекта.
-
Объект hit-for-pass найден в кэше.
Формат:
%u %f | | | +- Remaining TTL +---- VXID of the object
- HttpGarbage - Неразборчивый HTTP-запрос
-
Регистрирует содержимое неразборчивых HTTP-запросов.
- Length - Размер тела объекта
-
Регистрирует размер тела извлечённого объекта.
- Link - Связи с дочерним VXID
-
Связывает этот VXID с любым дочерним VXID, который он инициирует.
Формат:
%s %d %s [%u] | | | | | | | +- Child task sub-level | | +----- Reason | +-------- Child vxid +----------- Child type ("sess", "req" or "bereq") - LostHeader - Неудачная попытка установки HTTP-заголовка
-
Регистрирует имя заголовка неудачной операции установки HTTP-заголовка из-за исчерпания ресурсов или заданных лимитов.
- Notice - Информационные сообщения об обработке запроса
-
Информационные сообщения лога о событиях, произошедших во время обработки запроса.
Формат:
%s: %s | | | +- Short description of the notice message +----- Manual page containing the detailed description
См. раздел NOTICE MESSAGES ниже или отдельные страницы руководства VMOD для подробной информации о сообщениях уведомлений.
- ObjHeader - Заголовок объекта
-
Содержимое HTTP-заголовка.
Формат:
%s: %s | | | +- Header value +----- Header name
ПРИМЕЧАНИЕ: поля HTTP-заголовка — свободные записи и не состоят строго из 2 полей. Доступ к определённому заголовку с префиксной нотацией помогает рассматривать значение заголовка как одну строку.
- ObjProtocol - Протокол объекта
-
Информация о версии HTTP-протокола.
- ObjReason - Причина объекта
-
Строка причины HTTP-ответа.
- ObjStatus - Статус объекта
-
Код состояния HTTP-ответа.
- ObjUnset - Неустановленный заголовок объекта
-
Содержимое HTTP-заголовка.
Формат:
%s: %s | | | +- Header value +----- Header name
ПРИМЕЧАНИЕ: поля HTTP-заголовка — свободные записи и не состоят строго из 2 полей. Доступ к определённому заголовку с префиксной нотацией помогает рассматривать значение заголовка как одну строку.
- PipeAcct - Счетчики байтов трубы
-
Содержит счетчики байтов для сессий трубы.
Формат:
%d %d %d %d | | | | | | | +------- Piped bytes to client | | +---------- Piped bytes from client | +------------- Backend request headers +---------------- Client request headers
- Proxy - Информация о PROXY протоколе
-
Информация о PROXY протоколе.
Формат:
%d %s %d %s %d | | | | | | | | | +- server port | | | +---- server ip | | +------- client port | +---------- client ip +------------- PROXY protocol version All fields are "local" for PROXY local connections (command 0x0)
- ProxyGarbage - Неразборчивый запрос PROXY
-
Заголовок PROXY протокола не был распознан.
- ReqAcct - Счетчики байтов обработки запроса
-
Содержит счетчики байтов для обработки запроса. Количество байтов тела включает в себя накладные расходы передачи (например, кодирование по частям). Подзапросы ESI показывают количество байтов тела этого фрагмента ESI, включая все вложенные фрагменты, внесённые в основной запрос. Формат:
%d %d %d %d %d %d | | | | | | | | | | | +- Total bytes transmitted | | | | +---- Body bytes transmitted | | | +------- Header bytes transmitted | | +---------- Total bytes received | +------------- Body bytes received +---------------- Header bytes received
- ReqHeader - Заголовок запроса клиента
-
Содержимое HTTP-заголовка.
Формат:
%s: %s | | | +- Header value +----- Header name
ПРИМЕЧАНИЕ: поля HTTP-заголовка — свободные записи и не состоят строго из 2 полей. Доступ к определённому заголовку с префиксной нотацией помогает рассматривать значение заголовка как одну строку.
- ReqMethod - Метод запроса клиента
-
Используемый HTTP-метод запроса.
- ReqProtocol - Протокол запроса клиента
-
Информация о версии HTTP-протокола.
- ReqStart - Начало запроса клиента
-
Начало обработки запроса. Регистрирует адрес клиента, номер порта и имя конечной точки прослушивателя (из аргумента командной строки -a).
Формат:
%s %s %s | | | | | +-- Listener name (from -a) | +----- Client Port number (0 for Unix domain sockets) +-------- Client IP4/6 address (0.0.0.0 for UDS)
- ReqURL - URL запроса клиента
-
URL HTTP-запроса.
- ReqUnset - Неустановленный заголовок запроса клиента
-
Содержимое HTTP-заголовка.
Формат:
%s: %s | | | +- Header value +----- Header name
ПРИМЕЧАНИЕ: поля HTTP-заголовка — свободные записи и не состоят строго из 2 полей. Доступ к определённому заголовку с префиксной нотацией помогает рассматривать значение заголовка как одну строку.
- RespHeader - Заголовок ответа клиента
-
Содержимое HTTP-заголовка.
Формат:
%s: %s | | | +- Header value +----- Header name
ПРИМЕЧАНИЕ: поля HTTP-заголовка — свободные записи и не состоят строго из 2 полей. Доступ к определённому заголовку с префиксной нотацией помогает рассматривать значение заголовка как одну строку.
- RespProtocol - Протокол ответа клиента
-
Информация о версии HTTP-протокола.
- RespReason - Причина ответа клиента
-
Строка причины HTTP-ответа.
- RespStatus - Код состояния ответа клиента
-
Код состояния HTTP-ответа.
- RespUnset - Неустановленный заголовок ответа клиента
-
Содержимое HTTP-заголовка.
Формат:
%s: %s | | | +- Header value +----- Header name
ПРИМЕЧАНИЕ: поля HTTP-заголовка — свободные записи и не состоят строго из 2 полей. Доступ к определённому заголовку с префиксной нотацией помогает рассматривать значение заголовка как одну строку.
- SessClose - Закрытие соединения клиента
-
SessClose — последний запрос для любого подключения клиента.
Формат:
%s %f | | | +- How long the session was open +---- Why the connection closed
- SessError — Не удалось принять подключение клиента
-
Принятие подключения клиента не удалось.
Формат:
%s %s %s %d %d %s | | | | | | | | | | | +- Detailed error message | | | | +---- Error Number (errno) from accept(2) | | | +------- File descriptor number | | +---------- Local TCP port / 0 for UDS | +------------- Local IPv4/6 address / 0.0.0.0 for UDS +---------------- Socket name (from -a argument)
- SessOpen — Подключение клиента открыто
-
Первый запрос для подключения клиента с конечными точками сокета подключения.
Формат:
%s %d %s %s %s %f %d | | | | | | | | | | | | | +- File descriptor number | | | | | +---- Session start time (unix epoch) | | | | +------- Local TCP port / 0 for UDS | | | +---------- Local IPv4/6 address / 0.0.0.0 for UDS | | +------------- Socket name (from -a argument) | +---------------- Remote TCP port / 0 for UDS +------------------- Remote IPv4/6 address / 0.0.0.0 for UDS
- Storage — Место хранения объекта
-
Тип и имя хранилища, в котором хранится объект.
Формат:
%s %s | | | +- Name of storage backend +---- Type ("malloc", "file", "persistent" etc.) - TTL — Установленное время жизни объекта
-
Запись TTL генерируется всякий раз, когда устанавливаются значения ttl, grace или keep объекта, а также когда устанавливается возможность кеширования объекта.
Формат:
%s %d %d %d %d [ %d %d %u %u ] %s | | | | | | | | | | | | | | | | | | | +- "cacheable" or "uncacheable" | | | | | | | | +------ Max-Age from Cache-Control header | | | | | | | +--------- Expires header | | | | | | +------------ Date header | | | | | +--------------- Age (incl Age: header value) | | | | +-------------------- Reference time for TTL | | | +----------------------- Keep | | +-------------------------- Grace | +----------------------------- TTL +-------------------------------- "RFC", "VCL" or "HFP"
Четыре дополнительных поля присутствуют только в заголовках «RFC».
Примеры:
RFC 60 10 -1 1312966109 1312966109 1312966109 0 60 cacheable VCL 120 10 0 1312966111 uncacheable HFP 2 0 0 1312966113 uncacheable
- Timestamp — Информация о времени
-
Содержит информацию о времени для потоков обработки Varnish.
Отметки времени выдаются Varnish при определенных событиях и показывают абсолютное время события, время, прошедшее с начала блока работы, и время, прошедшее с момента регистрации последней отметки времени. Информацию об отдельных отметках времени см. в разделе TIMESTAMPS ниже.
Формат:
%s: %f %f %f | | | | | | | +- Time since last timestamp | | +---- Time since start of work unit | +------- Absolute time of event +----------- Event label
- VCL_Error — Сообщение об ошибке выполнения VCL
-
Регистрирует сообщения об ошибках, сгенерированные во время выполнения VCL.
- VCL_Log — Запись журнала из VCL
-
Пользовательские сообщения журнала, вставленные из VCL с помощью std.log()
- VCL_acl — Результаты проверки VCL ACL
-
ACL с флагом
+logвыдает эту запись с результатом.Формат:
%s %s [%s [fixed: %s]] | | | | | | | +- Fixed entry (see acl +pedantic flag) | | +------------ Matching entry (only for MATCH) | +---------------- Name of the ACL +-------------------- MATCH or NO_MATCH
MATCH означает соответствие ACL, NO_MATCH означает, что проверенный ACL не сопоставлен
- VCL_call — Вызванный метод VCL
-
Регистрирует имя метода VCL при вызове метода VCL.
- VCL_return — Возвращаемое значение метода VCL
-
Регистрирует завершающее утверждение метода VCL.
- VCL_trace — Данные трассировки VCL
-
Регистрирует данные трассировки выполнения VCL.
Формат:
%s %u %u.%u.%u | | | | | | | | | +- VCL program line position | | | +---- VCL program line number | | +------- VCL program source index | +---------- VCL trace point index +------------- VCL configname
ПРИМЕЧАНИЕ: эта запись журнала по умолчанию замаскирована.
- VCL_use — Используемый VCL
-
Записывает имя используемого VCL.
Формат:
%s [ %s %s ] | | | | | +- Name of label used to find it | +---- "via" +--------- Name of VCL put in use
- VSL — Предупреждения и сообщения об ошибках API VSL
-
Предупреждения и сообщения об ошибках, сгенерированные API VSL при чтении журнала общего доступа.
- VdpAcct — Учет фильтров доставки
-
Содержит имя VDP и статистику.
Формат:
%s %d %d | | | | | +- Total bytes produced | +---- Number of calls made +------- Name of filter
ПРИМЕЧАНИЕ: эта запись журнала по умолчанию замаскирована.
- VfpAcct — Учет фильтров извлечения
-
Содержит имя VFP и статистику.
Формат:
%s %d %d | | | | | +- Total bytes produced | +---- Number of calls made +------- Name of filter
ПРИМЕЧАНИЕ: эта запись журнала по умолчанию замаскирована.
- Witness — Записи свидетелей порядка блокировок
-
Диагностическая запись порядка блокировок.
- WorkThread — Регистрирует события начала/остановки потока
-
Регистрирует события создания и завершения потоков обработки.
Формат:
%p %s | | | +- [start|end] +---- Worker struct pointer
ПРИМЕЧАНИЕ: эта запись журнала по умолчанию замаскирована.
ВРЕМЕННЫЕ МАРКИ
Отметки времени вставляются в журнал при завершении определенных событий во время обработки задач потоком обработки. У отметки времени есть метка, показывающая, какое событие было завершено. Сообщаемые поля показывают абсолютное время события, время, прошедшее с начала задачи, и время, прошедшее с момента регистрации последней отметки времени.
Автоматически регистрируемые Varnish отметки времени вставляются после завершения событий, которые, как ожидается, будут иметь задержки (например, сетевой ввод-вывод или ожидание в очереди). Отметки времени также могут вставляться из VCL с помощью функции std.timestamp(). Если в конфигурации VCL выполняются задачи, требующие много времени, рекомендуется регистрировать отметку времени после завершения этой задачи. Это позволяет избежать включения затраченного времени на событие VCL в последующие отметки времени.
Отметки времени обработки запросов
- Начало
-
Начало обработки запроса (получение первого байта или перезапуск).
- Req
-
Получен полный запрос клиента.
- ReqBody
-
Обработан тело запроса клиента (отброшено, кэшировано или передано бэкенду).
- Очередь
-
Выход из очереди.
- Извлечение
-
Завершена обработка извлечения (полностью извлечено или готово к потоковой передаче).
- Обработка
-
Обработка завершена, готово отправить ответ клиенту.
- Ответ
-
Завершена доставка ответа клиенту.
- Перезапуск
-
Запрос клиента перезапускается.
Отметки времени обработки каналов
Следующие отметки времени относятся к отметкам времени клиента, специфичным для операций с каналами:
- Канал
-
Открыт канал с бэкендом и передан запрос.
- PipeSess
-
Сессия канала завершена.
Следующие отметки времени меняют свой смысл в операции с каналами:
- Обработка
-
Обработка завершена, готово начать доставку по каналу.
Отметки времени извлечения из бэкенда
- Начало
-
Начало обработки извлечения из бэкенда.
- Извлечение
-
Вышел из vcl_backend_fetch, готово отправить запрос бэкенду.
- Подключено
-
Успешное подключение к бэкенду или выбор повторно использованного подключения из пула.
- Bereq
-
Отправлен запрос бэкенду.
- Beresp
-
Получены заголовки ответа бэкенда.
- Обработка
-
Обработка завершена, готово извлечь тело ответа.
- BerespBody
-
Получено тело ответа бэкенда.
- Повторная попытка
-
Запрос бэкенда повторно отправляется.
- Ошибка
-
Запрос бэкенда завершен с ошибкой в vcl_backend_error.
СООБЩЕНИЯ ВНИМАНИЯ
Сообщения внимания содержат информационные сообщения об обработке запроса. Они могут касаться исключительных ситуаций, которые вызывают отклонения от стандартной обработки. Сообщения имеют префикс vsl: для сообщений, сгенерированных основным Varnish, и авторы VMOD должны использовать префикс vmod_<name>: для собственных сообщений внимания. Это соответствует названию страницы руководства, где ожидаются подробные описания сообщений внимания.
Ниже описаны основные сообщения.
Ожидание потоковой передачи объекта при условном извлечении
Бэкенд ответил 304 Not Modified при условном извлечении с использованием объекта, который еще не был полностью извлечен в качестве устаревшего шаблона объекта. Это может произойти только в том случае, если срок службы объекта меньше времени, необходимого для его извлечения. Извлечение приостанавливается до тех пор, пока устаревший объект не будет полностью извлечен, после чего новый объект создается в обычном режиме. Пока ожидается, любые ограничения по времени на устаревший объект будут действовать.
Большое количество вариантов
Объекты в первую очередь извлекаются из индекса с использованием хэш-ключа, вычисленного из функции hash_data() VCL. Когда участвуют варианты, то есть когда ответ бэкенда был сохранен с заголовком Vary , выполняется вторичный поиск, но он не индексируется. По мере увеличения числа вариантов для данного ключа поиск в кэше может замедляться, а так как это происходит под блокировкой, это может значительно увеличить конкуренцию за блокировку, особенно для часто запрашиваемых объектов. Поэтому следует экономно использовать варианты для кэшируемых ответов, но поскольку они могут исходить как из VCL, так и из серверов-источников, это сообщение поможет определить проблемные ресурсы.
ИСТОРИЯ
Данный документ первоначально был написан Poul-Henning Kamp, а затем обновлен Martin Blix Grydeland.
СМОТРИТЕ ТАКЖЕ
АВТОРСКИЕ ПРАВА
Этот документ лицензирован так же, как и сам Varnish. Подробности см. в LICENCE.
- Авторские права (с) 2006 Verdens Gang AS
- Авторские права (с) 2006-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/vsl.html