ajp_read_timeout
Директива `ajp_read_timeout` задаёт значение таймаута для чтения ответа от AJP backend server в NGINX.
Описание
Директива ajp_read_timeout задаёт время (в секундах), в течение которого NGINX будет ждать ответа от AJP (Apache JServ Protocol) server после установления соединения. Этот таймаут применяется конкретно к чтению ответа от upstream AJP server, что важно в сценариях, где при передаче данных может возникать задержка. Если таймаут превышен и ответ не получен, NGINX закроет соединение и запишет соответствующее сообщение об ошибке в лог.
Эта директива особенно полезна для предотвращения зависаний или длительных задержек в обработке, когда AJP backend находится под высокой нагрузкой или испытывает замедления. Установка подходящего таймаута помогает обеспечить предсказуемое поведение NGINX при обработке запросов и сократить использование ресурсов, освобождая worker connections, которые в противном случае могли бы оставаться занятыми бесконечно в ожидании ответа. Указанное значение можно корректировать на основании характеристик производительности приложения, что позволяет настроить его в соответствии с ожидаемой нагрузкой и временем отклика AJP backend services.
При настройке этой директивы важно учитывать, что значение таймаута должно быть задано точно, чтобы соответствовать ожиданиям как клиента, так и backend service. Если установить значение слишком маленьким, существует риск преждевременного прерывания корректных запросов; наоборот, при слишком большом значении это может привести к задержке в уведомлении пользователей об ошибках.
Пример конфига
http {
upstream tomcats {
server 127.0.0.1:8009;
}
server {
listen 80;
location / {
ajp_pass tomcats;
ajp_read_timeout 30s;
}
}
}Установка слишком низкого значения timeout может привести к отбрасыванию легитимных запросов и возврату ошибок клиентам.
Важно, чтобы настройки timeout на всех upstream servers совпадали, чтобы обеспечить согласованную обработку запросов AJP.