scgi_cache_lock_age

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

Синтаксисscgi_cache_lock_age time;
По умолчаниюnone
Контекстhttp, server, location
Аргументы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 не будет иметь никакого эффекта.

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

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

← Ко всем директивам