Все, что вам нужно знать о таймаутах NGINX

Все, что вам нужно знать о таймаутах NGINX

10:15, 23.05.2024

Содержание статьи
arrow

  • Основы таймаутов NGINX
  • Низкоуровневый таймаут TCP в NGINX
  • proxy_* Таймауты в NGINX
  • fastcgi_* таймауты в NGINX
  • Таймауты memcached_* в NGINX
  • Отключение общих таймаутов NGINX
  • Заключение 

NGINX - это популярный многоцелевой сервер, который связывает части внешней/внутренней сети, а также предоставляет доступ к динамическим данным и файлам. В этой статье мы поговорим именно о тайм-аутах NGINX и о том, как правильно работать с ними, отключая и устанавливая различные тайм-ауты. Таймауты очень важны, если говорить об аспекте конфигурации, поскольку они определяют период, в течение которого сервер ожидает определенного события перед его завершением. Они очень важны и влияют на стабильность работы серверов, а также на предотвращение исчерпания ресурсов. Итак, если эта тема показалась вам интересной, то мы поделимся с вами всеми практическими рекомендациями, касающимися таймаутов.   

Основы таймаутов NGINX

Вот несколько основных принципов работы таймаутов NGINX:

  • send_timeout - связан с максимальным временем отправки ответа клиенту (согласно настройкам по умолчанию, оно составляет 60). Это очень важно для устранения задержек с ответом и управления медленными клиентами.
  • client_body_timeout - этот таймаут характеризует максимальное время, необходимое для чтения основы запроса (по умолчанию - 60). Если запрос не будет получен, то соединение будет прекращено, что необходимо для работы с огромными сообщениями или загрузками файлов.
  • keepalive_timeout - максимальное время нахождения клиентского соединения на сервере (первый параметр - 75 по умолчанию, второй - 60 по умолчанию).
  • client_header_timeout - максимальное время, необходимое для чтения заголовка запроса (параметр по умолчанию равен 60). Если в течение определенного времени заголовок не будет получен, соединение будет прекращено. Этот вариант таймаута необходим для предотвращения неполных или медленных запросов.
  • lingering_timeout - этот цикл (по умолчанию 30) может повторяться в течение максимального времени, если включено lingering_close. Этот параметр задает максимальный промежуток времени для получения дополнительных данных от клиента.

Низкоуровневый таймаут TCP в NGINX

Если говорить о низком уровне, то в директиве listen есть keepalive, и этот параметр необходим для настройки TCP-сокета. Устанавливая его в положение off или on, мы используем важный механизм keepalive.

Мы также можем использовать список, разделенный двоеточиями:

  • keepintvl - устанавливает TCP_KEEPINTVL
  • keepidle - устанавливает TCP_KEEPIDLE
  • keepcnt - задает TCP_KEEPCNT

Игнорируя любой из перечисленных параметров, вы оставляете настройки по умолчанию.

proxy_* Таймауты в NGINX

Здесь мы поделимся только тремя наиболее часто встречающимися значениями таймаута для NGINX, и это следующие значения:

  • proxy_send_timeout - максимальное время, необходимое для отправки запроса (по умолчанию 60)
  • *_connect_timeout - максимальное время, необходимое для соединения с сервером (как правило, не более 75, но по умолчанию установлено значение 60)
  • *_read_timeout - максимальное время, необходимое для чтения ответа проксируемого сервера (по умолчанию 60)

fastcgi_* таймауты в NGINX

Говоря о настройках FastCGI-сервера, можно выделить несколько категорий, таких как:

  • fastcgi_send_timeout - это характеристика максимального времени отправки запросов FastCGI-сервера (по умолчанию 60)
  • *_connect_timeout - характеристика максимального времени соединения с сервером (как правило, не более 75, по умолчанию 60)
  • *_read_timeout - максимальное время чтения ответа от сервера (по умолчанию 60)

Таймауты memcached_* в NGINX

В случае с таймаутами memcached_* опции довольно похожи на те, что мы уже приводили в статье, поэтому они следующие:

  • memcached_send_timeout - характеризует максимальное время отправки запроса сервера Memcached (60)
  • *_connect_timeout - максимальное время соединения с сервером (как правило, не более 75, по умолчанию 60)
  • *_read_timeout - максимальное время чтения ответа сервера (по умолчанию 60)

Отключение общих таймаутов NGINX

При общем рассмотрении этой темы вы можете без труда воспользоваться списком настроек в сервере или http-блоке для отключения общих таймаутов, давайте рассмотрим пару основных примеров:

keepalive_timeout 1d

send_timeout 1d

client_body_timeout 1d

*_header_timeout 1d

proxy_send_timeout 1d

*_connect_timeout 1d

*_read_timeout 1d

fastcgi_read_timeout 1d

*_connect_timeout 1d

*_send_timeout 1d

memcached_read_timeout 1d

*_connect_timeout 1d

*_send_timeout 1d

Заключение 

Конечно, с NGINX у вас есть огромный выбор опций, с помощью которых вы можете настраивать различные таймауты. Однако когда вы изменяете основополагающие таймауты, это может существенно повлиять на характеристики производительности. Надеюсь, эта статья была полезной для вас, и вы получили все важные сведения о таймаутах NGINX.

views 40s
views 2
Поделиться

Была ли эта статья полезной для вас?

Популярные предложения VPS

Другие статьи на эту тему

cookie

Принять файлы cookie и политику конфиденциальности?

Мы используем файлы cookie, чтобы обеспечить вам наилучший опыт работы на нашем сайте. Если вы продолжите работу без изменения настроек, мы будем считать, что вы согласны получать все файлы cookie на сайте HostZealot.