ajp_cache_lock

Директива ajp_cache_lock предотвращает одновременное проксирование нескольких запросов к одному и тому же URI на AJP сервер, снижая нагрузку и повторную обработку.

Синтаксисajp_cache_lock on | off;
По умолчаниюoff
Контекстhttp, server, location
Аргументыflag

Описание

Директива ajp_cache_lock используется в модуле AJP (Apache Jserv Protocol) в NGINX для координации запросов к AJP-бэкенду. При включённой опции, если запрос для конкретного URI в данный момент обрабатывается, последующие идентичные запросы будут удерживаться до завершения первого запроса. Этот механизм блокировки помогает предотвратить чрезмерную нагрузку на AJP сервер, которая может возникнуть при большом числе параллельных запросов к одному и тому же ресурсу, что могло бы привести к избыточной обработке и увеличению задержек. Директива особенно полезна в сценариях с высоким трафиком, когда промахи кэша могут спровоцировать множество одновременных запросов, гарантируя, что бэкенд не будет перегружен обработкой дублирующих запросов.

Директива принимает флаг в качестве аргумента. Обычно он устанавливается в on или off: значение on включает поведение блокировки, а off — отключает его. Когда ajp_cache_lock установлен в on, NGINX гарантирует, что только один запрос с тем же ключом кэша будет передан на бэкенд, а параллельные запросы будут поставлены в очередь, что повышает эффективность и снижает конкуренцию за ресурсы на серверах бэкенда. Более того, если запрос завершается и получен успешный ответ, последующие запросы смогут сразу использовать кэшированный ответ, сокращая время отклика для пользователей, запрашивающих тот же ресурс после заполнения кэша.

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

http {
    upstream my_backend {
        server 127.0.0.1:8009;
    }

    server {
        listen 80;

        location / {
            ajp_pass my_backend;
            ajp_cache_lock on;
        }
    }
}

Убедитесь, что включение ajp_cache_lock не приводит к сильному накоплению запросов в очереди, что увеличивает задержку для конечных пользователей.

Проверьте, что ваш бэкенд-сервер AJP способен корректно обрабатывать блокировки запросов и не прерывает работу из-за превышения времени ожидания до завершения первого запроса.

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