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

Описание

Директива `uwsgi_cache_lock_timeout` в NGINX задаёт длительность, в течение которой блокировка кэша остаётся активной, ожидая завершения операции кэширования другим запросом. Когда несколько запросов пытаются получить из кэша данные из uWSGI, эта блокировка предотвращает лавину одновременных обращений к кэшу, обеспечивая, что одновременно только один запрос получает данные кэша. Если другой запрос поступает до истечения таймаута блокировки, он будет ждать освобождения блокировки, что уменьшает вероятность одновременной обработки множества запросов на бэкенде и повышает производительность. Эта директива принимает в качестве аргумента значение времени, которое определяет, как долго другие запросы будут ожидать блокировку кэша. Таймаут задаётся в секундах; более высокий таймаут может помочь при периодически высокой нагрузке, но может привести к увеличению задержки запросов в периоды сильного соперничества за доступ к кэшу. Напротив, установка слишком низкого значения может привести к тому, что несколько одновременных запросов обратятся к бэкенду, если исходный запрос выполняется дольше таймаута блокировки, что сведёт на нет преимущества кэширования. Кроме того, директиву `uwsgi_cache_lock_timeout` следует задавать в соответствующем контексте конфигурации (http, server, or location) в зависимости от того, где вы хотите управлять поведением кэширования. Используйте эту директиву обдуманно с учётом паттернов трафика и времени отклика приложения, чтобы добиться наилучшей производительности кэширования.

Пример конфига

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'.

Убедитесь, что механизм кэширования правильно настроен, иначе эта директива не будет иметь эффекта.