rate_limit_read_timeout
Директива `rate_limit_read_timeout` устанавливает таймаут на чтение ответов в модуле ограничения скорости на основе Redis для NGINX.
Описание
Директива 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.