postgres_result_timeout
Директива `postgres_result_timeout` определяет максимальное время ожидания результата запроса PostgreSQL до срабатывания тайм-аута.
Описание
Директива postgres_result_timeout используется для задания значения тайм-аута для запросов PostgreSQL, выполняемых через NGINX. Это помогает контролировать, как долго NGINX должен ждать ответа от сервера PostgreSQL, прежде чем отказаться и завершить обработку запроса. Установив этот параметр, пользователи могут снизить вероятность ситуаций, когда запрос зависает бесконечно, что может привести к исчерпанию ресурсов или снижению производительности веб-приложения.
Значение тайм-аута задаётся в миллисекундах и может быть указано в контекстах http, server или location. Директива принимает один аргумент — предельное время на обработку набора результатов запроса. Если указанный тайм-аут истечёт без получения ответа, NGINX прервет операцию и вернёт клиенту ошибку, обеспечивая отзывчивость приложения. Это особенно полезно в сценариях, когда операции с базой данных могут занимать больше времени, чем ожидается, из‑за высокой нагрузки или неэффективных запросов.
Для обеспечения оптимальной производительности приложения важно подобрать значение тайм-аута сбалансированно. Слишком короткий тайм-аут может привести к ненужному прерыванию запросов, тогда как слишком длинный — к длительному ожиданию в периоды пиковых нагрузок. Пользователям следует отслеживать производительность запросов и корректировать тайм-аут в соответствии с потребностями их приложения и поведением базы данных.
Пример конфига
location /data {
postgres_pass my_upstream;
postgres_query SELECT * FROM my_table;
postgres_result_timeout 1000;
}Установка слишком короткого таймаута может привести к отказу легитимных запросов и увеличению числа ошибок в вашем приложении.
Изменение таймаута без учёта производительности запросов может привести к непредвиденному поведению или сниженной отзывчивости.