scgi_cache_lock_age

Директива `scgi_cache_lock_age` контролирует продолжительность, в течение которой запрос будет удерживать блокировку записи кэша для ответов SCGI. — NGINX HTTP Core

scgi_cache_lock_age
httpserverlocation
Синтаксисscgi_cache_lock_age time;
По умолчаниюnone
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы1

Описание

Директива `scgi_cache_lock_age` в NGINX является важным параметром в контексте кэширования ответов SCGI. Когда выполняется запрос к SCGI-бэкенду и происходит промах кэша, NGINX попытается сохранить ответ этого запроса в кэше для последующих идентичных запросов. Чтобы предотвратить ситуацию, когда несколько процессов создают дублирующие SCGI-запросы, пока исходный запрос всё ещё обрабатывается, эта директива задаёт, как долго (в секундах) должна удерживаться блокировка кэша до тех пор, пока ответ не будет получен и сохранён в кэше. Установив этот параметр времени, вы фактически контролируете конкурентность запросов к одной и той же записи кэша, обеспечивая, что для конкретной записи кэша обрабатывается только один запрос до тех пор, пока не станет доступен ответ. Типичный сценарий использования `scgi_cache_lock_age` — это предотвращение проблемы одновременных запросов (thundering herd), когда множество запросов сервера приводит к перегрузке бэкенда. Блокируя запись кэша от обработки несколькими одновременными запросами до завершения первого, NGINX помогает смягчить возможные проблемы с нагрузкой и повышает общую эффективность ответов. Параметр принимает продолжительность, указанную в секундах, и его значение следует тщательно подбирать в зависимости от нагрузки сервера и ожидаемых шаблонов запросов, чтобы оптимизировать производительность при эффективном управлении использованием ресурсов.

Пример конфига

location /api {
    scgi_pass backend;
    scgi_cache my_cache;
    scgi_cache_lock on;
    scgi_cache_lock_age 10s;
}

Если `scgi_cache_lock` отключен, директива `scgi_cache_lock_age` не будет иметь никакого эффекта.

Для эффективности эта директива должна использоваться совместно с директивами кэширования.

Неправильная настройка может привести к ненужному ожиданию завершения других запросов перед ответом.