Все, що вам потрібно знати про таймаути 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

-8.4%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
75 GB SSD
Bandwidth
Bandwidth
Unlimited
10Ge-wKVM-SSD 2048 Windows

37.4

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

-8.1%

CPU
CPU
4 Epyc Cores
RAM
RAM
4 GB
Space
Space
50 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 4096 Windows

31.9

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

-10%

CPU
CPU
8 Xeon Cores
RAM
RAM
32 GB
Space
Space
200 GB SSD
Bandwidth
Bandwidth
12 TB
KVM-SSD 32768 Metered Linux

150

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

-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

123

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

-16.3%

CPU
CPU
4 Xeon Cores
RAM
RAM
2 GB
Space
Space
30 GB SSD
Bandwidth
Bandwidth
40 Mbps
DDoS Protected SSD-KVM 2048 Linux

48

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

-7.9%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
200 GB HDD
Bandwidth
Bandwidth
300 Gb
wKVM-HDD HK 8192 Windows

25.95

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

-10%

CPU
CPU
6 Xeon Cores
RAM
RAM
16 GB
Space
Space
150 GB SSD
Bandwidth
Bandwidth
Unlimited
KVM-SSD 16384 Linux

52

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

-5.9%

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

14.8

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

-12.3%

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

237

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

-24.4%

CPU
CPU
2 Xeon Cores
RAM
RAM
1 GB
Space
Space
20 GB SSD
Bandwidth
Bandwidth
300 GB
KVM-SSD 1024 HK Linux

13

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

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

cookie

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

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