rate_limit_read_timeout

Директива `rate_limit_read_timeout` устанавливает таймаут на чтение ответов в модуле ограничения скорости на основе Redis для NGINX.

Синтаксисrate_limit_read_timeout timeout;
По умолчаниюnone
Контекстhttp, server, location
Аргументы1

Описание

Директива rate_limit_read_timeout — это параметр модуля ограничения скорости на основе Redis для NGINX, который определяет максимальное время, в течение которого сервер будет ждать ответа при чтении данных из хранилища Redis. Этот таймаут важен в ситуациях, когда приложение или внешняя служба могут испытывать задержки, позволяя вам контролировать, сколько времени NGINX будет ждать, прежде чем прервать соединение с Redis. Это помогает предотвратить зависание сервера на неопределённое время при высокой нагрузке или проблемах сети.

Директива принимает один аргумент — длительность, указанную в секундах или в формате времени (например, "30s" для 30 секунд). Когда время ожидания чтения истекает, NGINX вернёт ошибку вместо зависания, что обеспечивает более корректную обработку ошибок и улучшает опыт пользователей. Этот параметр особенно важен для поддержания отзывчивости приложения, поскольку чрезмерно длительные времена чтения могут привести к снижению общей производительности или к таймаутам у конечных пользователей.

Для эффективного использования важно учитывать ожидаемое время отклика Redis в зависимости от нагрузки вашего приложения. Например, если вы ожидаете, что Redis будет отвечать в пределах 200 миллисекунд при нормальной нагрузке, установка rate_limit_read_timeout равной 1 секунде будет разумной. Однако если у вас обычно наблюдаются длительные запросы к Redis, может потребоваться увеличить таймаут, чтобы учитывать такие сценарии и не прерывать соединения преждевременно.

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

http {
    # Other configurations...
    rate_limit_read_timeout 30s;
}

Если установить это значение слишком низко, это может привести к ненужным timeouts и ухудшению пользовательского опыта, если Redis работает с обычной задержкой.

В сценариях с высокой нагрузкой убедитесь, что timeout откалиброван на основе наблюдаемых времен получения данных из Redis, чтобы избежать false negatives.

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