uwsgi_cache_lock_timeout

设置 uWSGI 缓存操作期间缓存锁的超时时间。 — NGINX HTTP Core

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

说明

NGINX 中的 `uwsgi_cache_lock_timeout` 指令用于控制在等待另一个请求完成其缓存操作时缓存锁保持激活的时长。当多个请求试图从 uWSGI 检索缓存数据时,该锁可防止缓存雪崩,确保一次只有一个请求能够获取缓存数据。如果在锁超时之前有另一个请求到达,它将等待锁被释放,从而减少多个后端请求的处理并提高性能。 该指令接受一个时间值作为参数,用于指定其他请求等待缓存锁的时长。超时以秒为单位定义,在负载偶发性较高的场景中较长的超时可能有助,但在缓存访问竞争激烈时会导致请求延迟增加。相反,将此值设置得过低可能会导致如果原始请求耗时超过锁超时,则多个并发请求同时打到后端,从而抵消缓存的好处。 此外,应在适当的配置上下文(http、server 或 location)中设置 `uwsgi_cache_lock_timeout` 指令,具体取决于您希望在哪个范围内管理缓存行为。请根据您的流量模式和应用响应时间谨慎使用此指令,以获得最佳的缓存性能。

配置示例

http {
    uwsgi_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m;

    server {
        location / {
            uwsgi_pass my_uwsgi;
            uwsgi_cache my_cache;
            uwsgi_cache_lock on;
            uwsgi_cache_lock_timeout 5s;
        }
    }
}

将超时设置得过低可能导致缓存未命中,因为其他请求可能不会等待足够长的时间让锁释放。

如果缓存锁超时设置得不成比例地高于预期响应时间,在高争用情况下会导致请求产生不必要的用户等待时间。

未指定值可能会根据其他配置设置导致不可预测的行为。必须始终定义一个值或将其设置为 'none'。

确保缓存机制已正确配置,否则该指令不会生效。