scgi_cache_lock_timeout
Устанавливает максимальное время ожидания блокировки кэшированного ответа в SCGI-кешировании NGINX. — NGINX HTTP Core
Описание
Директива `scgi_cache_lock_timeout` в NGINX HTTP Core module задаёт максимальную длительность ожидания при попытке получить блокировку для кэшированного SCGI-ответа. Это особенно полезно, когда несколько запросов к одному и тому же ресурсу обрабатываются одновременно. Когда поступает запрос и соответствующий кэшированный ответ недоступен, устанавливается блокировка, чтобы предотвратить одновременное формирование нескольких SCGI-запросов для того же ресурса. Это гарантирует, что будет выполнен только один запрос upstream, пока остальные ожидают. Если указанный таймаут истечёт и блокировка не будет получена, ожидающие запросы будут возвращены с ошибкой или получат устаревшую кэшированную версию (если такое поведение включено). Поэтому эта директива помогает контролировать, как долго запросы должны находиться в режиме ожидания при возникновении cache miss и предотвращает перегрузку upstream server из‑за одновременных запросов. Значение для `scgi_cache_lock_timeout` задаётся в секундах и позволяет точно контролировать поведение сервера, связанное с блокировками при обработке SCGI-запросов. Возможность задать такой таймаут может значительно повысить производительность под нагрузкой и улучшить время ответа для конечных пользователей.
Пример конфига
scgi_cache_lock_timeout 5s;
Будьте осторожны с установкой слишком высокого таймаута; это может привести к увеличению времени ожидания для запросов при промахах кэша.
Если таймаут установлен слишком низко, это может привести к ненужным промахам кэша, поскольку запросы будут завершаться с ошибкой до получения блокировки.