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

-20.6%

CPU
CPU
6 Xeon Cores
RAM
RAM
8GB
Space
Space
100GB SSD
Bandwidth
Bandwidth
500GB
KVM-SSD 8192 HK Linux

59

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

-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

7

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

-9.7%

CPU
CPU
10 Xeon Cores
RAM
RAM
64 GB
Space
Space
300 GB SSD
Bandwidth
Bandwidth
Unlimited
wKVM-SSD 65536 Windows

138.99

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

-10%

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

49.99

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

-26.7%

CPU
CPU
3 Xeon Cores
RAM
RAM
1 GB
Space
Space
20 GB SSD
Bandwidth
Bandwidth
1 TB
KVM-SSD 1024 Metered Linux

10

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

-20.4%

CPU
CPU
2 Xeon Cores
RAM
RAM
2 GB
Space
Space
30 GB SSD
Bandwidth
Bandwidth
300 GB
KVM-SSD 2048 HK Linux

18

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

-20.5%

CPU
CPU
6 Xeon Cores
RAM
RAM
8 GB
Space
Space
100 GB SSD
Bandwidth
Bandwidth
8 TB
KVM-SSD 8192 Metered Linux

57

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

-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 місяців

-10%

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

18.65

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

-9.7%

CPU
CPU
10 Epyc Cores
RAM
RAM
64 GB
Space
Space
300 GB NVMe
Bandwidth
Bandwidth
Unlimited
wKVM-NVMe 65536 Windows

139.49

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

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

cookie

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

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