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

说明

在 NGINX 中,`scgi_cache_lock_age` 指令是在缓存 SCGI 响应时的一个重要参数。当向 SCGI 后端发出请求并发生缓存未命中时,NGINX 会尝试缓存该请求的响应以供后续相同请求使用。为了防止在原始请求仍在处理中时多个进程重复向后端发起相同的 SCGI 请求,该指令指定了在响应被获取并缓存之前,缓存锁应保持多长时间(以秒为单位)。通过设置该时长,你可以有效控制对同一缓存条目的请求并发性,确保在响应可用之前仅对该缓存条目处理一个请求。 `scgi_cache_lock_age` 的典型用例是避免惊群问题,即大量并发请求导致后端服务被压垮。通过在第一个请求完成之前对缓存条目加锁以阻止多个同时请求,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` 指令将不会生效。

该指令应与缓存指令结合使用才能发挥作用。

配置错误可能导致在响应之前不必要地等待其他请求完成。