# HG changeset patch # User Nejc Lovrencic <nejc.lovren...@gmail.com> # Date 1711005111 -3600 # Thu Mar 21 08:11:51 2024 +0100 # Node ID 8d38e6642e82bb219bb5b586f1dcca5222a036e8 # Parent 89bff782528a91ad123b63b624f798e6fd9c8e68 proxy_cache_lock: Make lock timer configurable
Default timer is set to 500ms. This in a worst-case scenario adds 500ms latency to MISS requests. This commit adds proxy_cache_lock_wait_time directive, which makes the timer configurable. diff -r 89bff782528a -r 8d38e6642e82 src/http/modules/ngx_http_proxy_module.c --- a/src/http/modules/ngx_http_proxy_module.c Wed Feb 14 20:03:00 2024 +0400 +++ b/src/http/modules/ngx_http_proxy_module.c Thu Mar 21 08:11:51 2024 +0100 @@ -592,6 +592,12 @@ offsetof(ngx_http_proxy_loc_conf_t, upstream.cache_lock_age), NULL }, + { ngx_string("proxy_cache_lock_wait_time"), + NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, + ngx_conf_set_msec_slot, + NGX_HTTP_LOC_CONF_OFFSET, + offsetof(ngx_http_proxy_loc_conf_t, upstream.cache_lock_wait_time), + NULL }, { ngx_string("proxy_cache_revalidate"), NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, ngx_conf_set_flag_slot, @@ -3390,6 +3396,7 @@ conf->upstream.cache_lock = NGX_CONF_UNSET; conf->upstream.cache_lock_timeout = NGX_CONF_UNSET_MSEC; conf->upstream.cache_lock_age = NGX_CONF_UNSET_MSEC; + conf->upstream.cache_lock_wait_time = NGX_CONF_UNSET_MSEC; conf->upstream.cache_revalidate = NGX_CONF_UNSET; conf->upstream.cache_convert_head = NGX_CONF_UNSET; conf->upstream.cache_background_update = NGX_CONF_UNSET; @@ -3705,6 +3712,9 @@ ngx_conf_merge_msec_value(conf->upstream.cache_lock_age, prev->upstream.cache_lock_age, 5000); + ngx_conf_merge_msec_value(conf->upstream.cache_lock_wait_time, + prev->upstream.cache_lock_wait_time, 500); + ngx_conf_merge_value(conf->upstream.cache_revalidate, prev->upstream.cache_revalidate, 0); diff -r 89bff782528a -r 8d38e6642e82 src/http/ngx_http_cache.h --- a/src/http/ngx_http_cache.h Wed Feb 14 20:03:00 2024 +0400 +++ b/src/http/ngx_http_cache.h Thu Mar 21 08:11:51 2024 +0100 @@ -103,6 +103,7 @@ ngx_msec_t lock_timeout; ngx_msec_t lock_age; ngx_msec_t lock_time; + ngx_msec_t lock_wait_time; ngx_msec_t wait_time; ngx_event_t wait_event; diff -r 89bff782528a -r 8d38e6642e82 src/http/ngx_http_file_cache.c --- a/src/http/ngx_http_file_cache.c Wed Feb 14 20:03:00 2024 +0400 +++ b/src/http/ngx_http_file_cache.c Thu Mar 21 08:11:51 2024 +0100 @@ -452,7 +452,10 @@ timer = c->wait_time - now; - ngx_add_timer(&c->wait_event, (timer > 500) ? 500 : timer); + ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, + "http file cache lock timer tm:%M lwt:%M", timer, c->lock_wait_time); + + ngx_add_timer(&c->wait_event, (timer > c->lock_wait_time) ? c->lock_wait_time : timer); r->main->blocked++; @@ -531,7 +534,7 @@ ngx_shmtx_unlock(&cache->shpool->mutex); if (wait) { - ngx_add_timer(&c->wait_event, (timer > 500) ? 500 : timer); + ngx_add_timer(&c->wait_event, (timer > c->lock_wait_time) ? c->lock_wait_time : timer); return NGX_AGAIN; } diff -r 89bff782528a -r 8d38e6642e82 src/http/ngx_http_upstream.c --- a/src/http/ngx_http_upstream.c Wed Feb 14 20:03:00 2024 +0400 +++ b/src/http/ngx_http_upstream.c Thu Mar 21 08:11:51 2024 +0100 @@ -894,6 +894,7 @@ c->lock = u->conf->cache_lock; c->lock_timeout = u->conf->cache_lock_timeout; c->lock_age = u->conf->cache_lock_age; + c->lock_wait_time = u->conf->cache_lock_wait_time; u->cache_status = NGX_HTTP_CACHE_MISS; } diff -r 89bff782528a -r 8d38e6642e82 src/http/ngx_http_upstream.h --- a/src/http/ngx_http_upstream.h Wed Feb 14 20:03:00 2024 +0400 +++ b/src/http/ngx_http_upstream.h Thu Mar 21 08:11:51 2024 +0100 @@ -204,6 +204,7 @@ ngx_flag_t cache_lock; ngx_msec_t cache_lock_timeout; ngx_msec_t cache_lock_age; + ngx_msec_t cache_lock_wait_time; ngx_flag_t cache_revalidate; ngx_flag_t cache_convert_head; _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-devel