ajp_keep_conn
Директива `ajp_keep_conn` позволяет устанавливать постоянные соединения с AJP-бэкендами в NGINX.
Описание
Директива ajp_keep_conn используется в NGINX для управления тем, оставлять ли соединения с AJP (Apache JServ Protocol) бэкендами постоянными. При установке значения 'on' эта директива позволяет NGINX поддерживать и повторно использовать соединения с серверами бэкенда, вместо того чтобы закрывать их после каждого запроса. Это может значительно повысить производительность приложений, использующих AJP, за счёт сокращения накладных расходов, связанных с установкой новых соединений для каждого запроса.
Включение постоянных соединений уменьшает задержки и повышает пропускную способность, так как затраты на установку соединения (включая установление TCP-соединений и, возможно, SSL-рукопожатия) несутся только один раз. Однако важно учитывать влияние на лимиты соединений, установленные бэкенд-сервером AJP. Если слишком много клиентов попытаются использовать ограниченное число бэкенд-соединений, могут возникнуть проблемы, такие как отказ в подключении или чрезмерные задержки. Поэтому конфигурацию следует протестировать с учётом характеристик рабочей нагрузки вашего приложения.
Директива может применяться в различных контекстах, таких как блоки http, server или location в конфигурации NGINX, что делает её гибкой для разных схем маршрутизации. Она выступает в роли простого флага для переключения поведения обработки соединений для AJP-коммуникаций.
Пример конфига
http {
upstream tomcats {
server 127.0.0.1:8009;
keepalive 10;
}
server {
listen 80;
location / {
ajp_keep_conn on;
ajp_pass tomcats;
}
}
}Включение ajp_keep_conn может привести к исчерпанию соединений, если бэкенд‑сервер не способен эффективно обрабатывать несколько постоянных соединений.
Если настройки пуллинга соединений на бэкенде меньше ожидаемого числа одновременных соединений от NGINX, это может привести к ошибкам отказа в соединении.