Все, що вам потрібно знати про таймаути NGINX

watch 41s
views 2

09:41, 27.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-сокета. Вмикаючи або вимикаючи його, ми використовуємо важливий механізм keepalive.

Ми також можемо використовувати список, розділений двокрапкою:

  • keepintvl – sets TCP_KEEPINTVL
  • keepidle – sets TCP_KEEPIDLE
  • keepcnt – sets TCP_KEEPCNT

Ігноруючи будь-який з цих параметрів, ви залишаєте налаштування за замовчуванням.

proxy_* Тайм-аути в NGINX

Тут ми наведемо лише 3 найпоширеніші значення таймаутів для 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

-10%

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

115.5

При оплаті за рік

-7.3%

CPU
CPU
3 Epyc Cores
RAM
RAM
2 GB
Space
Space
25 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 2048 Windows

22

При оплаті за рік

-16.2%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
50 GB SSD
Bandwidth
Bandwidth
60 Mbps
DDoS Protected SSD-KVM 4096 Linux

67

При оплаті за рік

-18.6%

CPU
CPU
4 Xeon Cores
RAM
RAM
4 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
4 TB
wKVM-SSD 4096 Metered Windows

38

При оплаті за рік

-18.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
75 GB SSD
Bandwidth
Bandwidth
2 TB
wKVM-SSD 2048 Metered Windows

24

При оплаті за рік

-20.5%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
10 TB
KVM-SSD 16384 Metered Linux

95

При оплаті за рік

CPU
CPU
6 Epyc Cores
RAM
RAM
8 GB
Space
Space
100 GB NVMe
Bandwidth
Bandwidth
Unlimited
Keitaro KVM 8192
OS
CentOS
Software
Software
Keitaro

При оплаті за місяць

-15.4%

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

130

При оплаті за рік

-8.1%

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

31.25

При оплаті за рік

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
400 GB HDD
Bandwidth
Bandwidth
Unlimited
KVM-HDD 16384 Linux

50

При оплаті за рік

Інші статті на цю тему

cookie

Чи приймаєте ви файли cookie та політику конфіденційності?

Ми використовуємо файли cookie, щоб забезпечити вам найкращий досвід роботи на нашому сайті. Якщо ви продовжуєте користуватися сайтом, не змінюючи налаштувань, вважайте, що ви згодні на отримання всіх файлів cookie на сайті HostZealot.