uwsgi_cache_lock_timeout
Устанавливает период ожидания (таймаут) для блокировки кэша во время операций кэширования uWSGI. — NGINX HTTP Core
Описание
Директива `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'.
Убедитесь, что механизм кэширования правильно настроен, иначе эта директива не будет иметь эффекта.