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

watch 40s
views 2

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.

Поделиться

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

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

-9.1%

CPU
CPU
6 Epyc Cores
RAM
RAM
16 GB
Space
Space
150 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 16384 Windows

£ 58.83

£

При оплате за год

-9.9%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB HDD
Bandwidth
Bandwidth
300 Gb
KVM-HDD HK 4096 Linux

£ 10.67

£

При оплате за год

-8.1%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
200 GB HDD
Bandwidth
Bandwidth
Unlimited
wKVM-HDD 8192 Windows

£ 27.64

£

При оплате за год

-20.2%

CPU
CPU
1 Xeon Core
RAM
RAM
1 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
300 GB
wKVM-SSD 1024 HK Windows

£ 16.81

£

При оплате за год

-10%

CPU
CPU
4 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-KVM-SSD 8192 Linux

£ 102.17

£

При оплате за год

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
Keitaro KVM 4096
OS
CentOS
Software
Software
Keitaro
£

При оплате за 3 месяца

-13.1%

CPU
CPU
2 Xeon Cores
RAM
RAM
512 MB
Space
Space
10 GB SSD
Bandwidth
Bandwidth
300 GB
KVM-SSD 512 HK Linux

£ 6.19

£

При оплате за год

-12.3%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-wKVM-SSD 16384 Windows

£ 209.65

£

При оплате за год

-15.3%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
75 GB SSD
Bandwidth
Bandwidth
40 Mbps
DDoS Protected SSD-wKVM 2048 Windows

£ 47.77

£

При оплате за год

-10.2%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
100 Mbps
DDoS Protected SSD-KVM 16384 Linux

£ 108.8

£

При оплате за 6 месяцев

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

cookie

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

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