uwsgi_cache_lock_timeout

Устанавливает период ожидания (таймаут) для блокировки кэша во время операций кэширования uWSGI.

Синтаксисuwsgi_cache_lock_timeout time;
По умолчаниюnone
Контекстhttp, server, location
Аргументы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'.

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

← Ко всем директивам