fastcgi_cache_lock_timeout

设置获取 FastCGI 缓存锁的最大等待时间。 — NGINX HTTP Core

fastcgi_cache_lock_timeout
httpserverlocation
语法fastcgi_cache_lock_timeout time;
默认值none
上下文http, server, location
模块NGINX HTTP Core
参数1

说明

`fastcgi_cache_lock_timeout` 指令配置了当另一个请求正在处理该缓存条目时,请求在尝试获取 FastCGI 缓存锁时将等待的持续时间。这在请求在尝试存储相同缓存内容时可能发生冲突的场景中特别有用。如果在获取锁之前超时到期,锁请求将失败,从而避免并发请求可能出现的长时间等待,并允许它们继续执行而不会无限期阻塞。 此指令可帮助提高应用的响应时间,尤其是在高负载时。通过设置 `fastcgi_cache_lock_timeout`,您可以精确控制一个请求等待另一个请求的允许时间,降低延迟并在高峰流量期间改善整体用户体验。它必须在适当的上下文中设置,例如 `http`、`server` 或 `location`,并接受一个指定超时时长的单个参数。 当配置的超时达到时,任何后续请求可能会收到替代响应,或根据应用的内部处理逻辑以不同方式被处理。因此,在决定此指令的值时应谨慎,以在锁定行为与整体性能之间取得平衡。

配置示例

location /api {
    fastcgi_pass backend;
    fastcgi_cache my_cache;
    fastcgi_cache_lock on;
    fastcgi_cache_lock_timeout 10s;
}

将超时设置得过低可能导致频繁获取锁失败,这可能会使多个请求同时被处理,并可能导致缓存击穿问题。

用户必须确保启用 `fastcgi_cache_lock` 指令,以便有效使用 `fastcgi_cache_lock_timeout`。

过长的超时值也可能导致性能下降,因为请求可能会被阻塞较长时间。