Alles, was Sie über NGINX Timeouts wissen müssen

Alles, was Sie über NGINX Timeouts wissen müssen

23.05.2024
Autor: HostZealot Team
2 min.
99

NGINX ist ein beliebter Mehrzweckserver, der Teile des externen/internen Netzwerks verbindet und auch den Zugriff auf dynamische Daten und Dateien ermöglicht. In diesem Artikel werden wir speziell über die NGINX-Timeouts sprechen und wie man alles richtig handhabt, indem man verschiedene Timeouts deaktiviert und einstellt. Timeouts sind von wesentlicher Bedeutung, wenn es um den Aspekt der Konfiguration geht, denn sie geben den Zeitraum an, in dem der Server auf ein bestimmtes Ereignis wartet, bevor er beendet wird. Sie sind äußerst wichtig und beeinflussen die Stabilität der Server sowie die Beendigung der Ressourcenerschöpfung. Wenn dieses Thema also interessant klingt, werden wir alle praktischen Empfehlungen zu Timeouts mit Ihnen teilen.   

Grundlagen von NGINX-Timeouts

Hier sind ein paar der Grundlagen von NGINX Timeouts:

  •  send_timeout - dies bezieht sich auf den maximalen Zeitrahmen, in dem die Antwort an den Client gesendet wird (in der Standardeinstellung sind es 60). Dies ist wichtig, um Verzögerungen bei der Antwort zu vermeiden und langsame Clients zu verwalten.
  •  client_body_timeout - diese Zeitspanne gibt die maximale Zeitspanne an, die für das Lesen des Body der Anfrage benötigt wird (60 gemäß der Voreinstellung). Falls diese Anfrage nicht empfangen wird, wird die Verbindung geschlossen, was bei großen Post- oder Datei-Uploads notwendig ist.
  •  keepalive_timeout - das ist die maximale Zeitspanne, die die Client-Verbindung auf dem Server bleiben muss (der erste Parameter ist standardmäßig 75, der zweite 60).
  •  client_header_timeout - das ist die maximale Zeitspanne, die für das Lesen des Headers der Anfrage benötigt wird (der Standardparameter ist 60). Wenn der Header nicht innerhalb einer bestimmten Zeit empfangen wird, wird die Verbindung geschlossen. Diese Variante der Zeitüberschreitung wird benötigt, um partielle oder langsame Anfragen zu verhindern.
  •  lingering_timeout - dieser Zyklus (Standardwert 30) kann sich maximal wiederholen, wenn lingering_close eingeschaltet ist. Dieser Parameter legt die maximale Zeitspanne fest, in der weitere Daten vom Client eintreffen können.

TCP-Zeitüberschreitung auf niedriger Ebene in NGINX

Wenn wir über die untere Ebene sprechen, dann hat die listen-Direktive keepalive und dieser Parameter wird für die Konfiguration des TCP-Sockets benötigt. Indem wir ihn aus- oder einschalten, nutzen wir einen wichtigen Keepalive-Mechanismus.

Wir können auch eine durch Doppelpunkte getrennte Liste verwenden:

  • keepintvl - setzt TCP_KEEPINTVL
  • keepidle - setzt TCP_KEEPIDLE
  • keepcnt - setzt TCP_KEEPCNT

Wenn Sie einen der genannten Parameter ignorieren, belassen Sie die Standardeinstellungen.

proxy_* Zeitüberschreitungen in NGINX

Hier teilen wir nur 3 der häufigsten Timeout-Werte für NGINX, und sie sind die folgenden:

  •  proxy_send_timeout - maximale Zeitspanne, die benötigt wird, um eine Anfrage zu senden (Standard 60)
  •  *_connect_timeout - maximale Zeitspanne, die benötigt wird, um sich mit dem Server zu verbinden (in der Regel unter 75, aber der Standardparameter ist 60)
  •  *_read_timeout - maximale Zeitspanne zum Lesen der Antwort des Proxy-Servers (Standardwert 60)

fastcgi_* Zeitüberschreitungen in NGINX

Wenn man über die Einstellungen des FastCGI-Servers spricht, kann man auf mehrere Kategorien hinweisen, wie zum Beispiel:

  •  fastcgi_send_timeout - dies ist ein Merkmal des maximalen Zeitrahmens für das Senden von Anfragen des FastCGI-Servers (Standard 60)
  •  *_connect_timeout - dies ist ein Merkmal des maximalen Zeitrahmens für die Verbindung zum Server (in der Regel unter 75, Standardwert 60)
  •  *_read_timeout - maximaler Zeitrahmen für das Lesen der Antwort vom Server (Standardwert 60)

memcached_* Zeitüberschreitungen in NGINX

Bei memcached_* Timeouts sind die Optionen ziemlich ähnlich zu den Beispielen, die wir bereits in diesem Artikel vorgestellt haben, also sind sie die folgenden:

  •  memcached_send_timeout - dies ist charakteristisch für den maximalen Zeitrahmen für das Senden der Anfrage des Memcached-Servers (60)
  •  *_connect_timeout - die maximale Zeitspanne für die Verbindung mit dem Server (in der Regel unter 75, Standard 60)
  •  *_read_timeout - die maximale Zeitspanne für das Lesen der Antwort des Servers (Standardwert 60)

Deaktivieren allgemeiner NGINX-Zeitüberschreitungen

Bei der allgemeinen Betrachtung dieses Themas können Sie mühelos die Liste der Einstellungen im Server- oder http-Block verwenden, um die üblichen Timeouts zu deaktivieren. Lassen Sie uns ein paar der grundlegenden Beispiele durchgehen:

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

Zusammenfassung​

Natürlich haben Sie mit NGINX eine große Variabilität an Alternativen, mit denen Sie verschiedene Timeouts einstellen können. Wenn Sie jedoch die entscheidenden Timeouts ändern, kann dies die Leistungsmerkmale erheblich beeinflussen. Wir hoffen, dass dieser Artikel für Sie hilfreich war und Sie alle wichtigen Erkenntnisse über die NGINX Timeouts erhalten haben.

Verwandte Artikel