Als Linux-Benutzer mit über 10 Jahren Erfahrung weiß ich, wie wichtig es ist, Ihr System hinsichtlich Leistung und Zuverlässigkeit zu optimieren. Eine häufige Aufgabe bei der Verwaltung von Webservern und Anwendungen ist die SteuerungHTTPAnfragen.
Insbesondere das Festlegen eines Timeouts fürHTTPAnfragen können dazu beitragen, dass Ihr System nicht hängen bleibt oder unbegrenzt auf eine Antwort von einem Server wartet.
In diesem Leitfaden führe ich Sie durch die Schritte zur Zeitüberschreitung von HTTP-Anfragen unter Linux und behandle verschiedene Tools und Konfigurationen, die Sie verwenden können, um sicherzustellen, dass Ihr System reibungslos läuft.
Was ist ein HTTP-Request-Timeout?
Ein HTTP-Anfrage-Timeout tritt auf, wenn ein Client (z. B. ein Browser oder ein Skript) eine Anfrage an einen Server sendet, der Server jedoch nicht innerhalb einer bestimmten Zeitspanne antwortet, was daran liegen kann, dass der Server zu langsam oder überlastet ist reagiert nicht. In solchen Fällen hört der Client auf zu warten und gibt eine Fehler- oder Zeitüberschreitungsmeldung zurück.
Zeitüberschreitungen sind von entscheidender Bedeutung, um sicherzustellen, dass Ihr System keine Ressourcen verschwendet, indem es auf Antworten von nicht reagierenden Servern wartet. Durch das Festlegen geeigneter Zeitüberschreitungen können Sie Verzögerungen verhindern, die Leistung verbessern und vermeiden.
Warum Timeout-HTTP-Anfragen festlegen?
Es gibt mehrere Gründe, warum das Festlegen von Zeitüberschreitungen für HTTP-Anfragen wichtig ist:
- Vermeiden Sie Serverüberlastung– Lang andauernde HTTP-Anfragen können dazu führen, dass Ihr Server nicht mehr reagiert oder überlastet ist, insbesondere wenn mehrere Anfragen vorliegen.
- Verbessern Sie die Systemleistung– Durch das Festlegen eines Timeouts können Sie sicherstellen, dass Ihr System nicht zu lange auf eine Antwort wartet, wodurch Ihre Ressourcen für andere Aufgaben frei bleiben.
- Bessere Fehlerbehandlung– Durch Zeitüberschreitungen kann Ihr System ordnungsgemäß ausfallen, wenn ein Server nicht reagiert, anstatt auf unbestimmte Zeit hängen zu bleiben.
- Sicherheit– Die Begrenzung der Wartezeit auf eine Antwort kann dazu beitragen, das Risiko bestimmter Angriffsarten zu verringern, zDenial-of-Service(Von der) Angriffe.
Methoden zum Festlegen von Timeout-HTTP-Anfragen unter Linux
Unter Linux stehen mehrere Tools und Methoden zum Verwalten von Zeitüberschreitungen bei HTTP-Anfragen zur Verfügung. Sehen wir uns die gängigsten an.
1. Curl für HTTP-Request-Timeout verwenden
ist ein Befehlszeilentool zum Übertragen von Daten über URLs, das eine Vielzahl von Protokollen, einschließlich HTTP, unterstützt und es Ihnen ermöglicht, Zeitüberschreitungen für Ihre Anfragen festzulegen.
Um eine Zeitüberschreitung festzulegenLocken, verwenden Sie die--max-time
Option, die die maximale Zeit (in Sekunden) angibtLockenermöglicht den gesamten Vorgang (einschließlich Verbindung, Datenübertragung usw.). Sobald diese Zeit überschritten ist, bricht Curl die Anfrage ab.
curl --max-time 10 https://example.com
In diesem Beispiel,Lockenwerde maximal warten10Sekunden für eine Antwort vonhttps://example.com
. Wenn der Server innerhalb dieser Zeit nicht antwortet,Lockenbeendet die Anfrage und gibt einen Fehler zurück.
2. Zeitüberschreitungen im Apache HTTP Server festlegen
Wenn Sie einen Webserver wie betreibenApache, können Sie Timeouts direkt in der Konfigurationsdatei konfigurieren (httpd.conf
oderapache2.conf
).
Apache verfügt über zwei Haupt-Timeout-Einstellungen:
- Time-out– Diese Direktive legt die maximale Zeit fest, die der Server auf eine vollständige Anfrage vom Client wartet.
- ProxyTimeout– Dies wird verwendet, wennApachefungiert als Reverse-Proxy und wartet auf eine Antwort von einem Backend-Server.
Um das einzustellenTime-outRichtlinie inApache, öffnen Sie die Apache-Konfigurationsdatei und legen Sie den Wert für Timeout in Sekunden fest.
Timeout 60
Das bedeutet, dass Apache maximal 60 Sekunden auf den Abschluss einer Anfrage wartet. Wenn es länger dauert, gibt der Server einen Timeout-Fehler zurück.
Wenn Sie Apache als Reverse-Proxy verwenden, können Sie ebenfalls festlegenProxyTimeoutDirektive:
ProxyTimeout 30
Dadurch wird die maximale Zeit, die Apache auf eine Antwort des Backend-Servers wartet, auf 30 Sekunden festgelegt.
3. Nginx für HTTP-Timeout konfigurieren
Nginxist ein weiterer beliebter Webserver und bietet auch mehrere Anweisungen zur Steuerung von Zeitüberschreitungen.
client_header_timeout
– Definiert den Timeout für das Lesen des Request-Headers des Clients.client_body_timeout
– Definiert das Timeout für das Lesen des Client-Bodys.send_timeout
– Legt den Timeout für das Senden von Daten an den Client fest.proxy_read_timeout
– Definiert den Timeout für das Lesen einer Antwort von einem Proxy-Server.
So konfigurieren Sie Zeitüberschreitungen inNginx, öffnen Sie die Nginx-Konfigurationsdatei (nginx.conf
) und stellen Sie die gewünschten Timeout-Werte ein.
http { client_header_timeout 10s; client_body_timeout 10s; send_timeout 10s; proxy_read_timeout 30s; }
Diese Konfiguration stellt dies sicherNginxwartet nicht länger als 10 Sekunden auf Clientdaten und 30 Sekunden auf eine Antwort von einem Proxyserver.
4. Verwendung von wget für HTTP-Request-Timeout
Wie,ist ein weiteres Befehlszeilentool zum Herunterladen von Dateien aus dem Internet, das auch das Festlegen von Zeitüberschreitungen unterstützt.
Um eine Zeitüberschreitung in wget festzulegen, verwenden Sie die--timeout
Option, die die maximale Zeit (in Sekunden) angibtwgetwartet auf eine Antwort vom Server.
wget --timeout=15 https://example.com/file.zip
Dieser Befehl sagt eswgetum maximal 15 Sekunden auf eine Antwort zu warten, bevor die Anfrage abgebrochen wird.
5. Zeitüberschreitungen in PHP und anderen Skriptsprachen
Wenn Sie verwendenPHPoder einer anderen serverseitigen Skriptsprache können Sie auch Zeitüberschreitungen für HTTP-Anfragen festlegen, die in Ihren Skripten erfolgen.
In PHP können Sie das verwendenini_set
Funktion zum Konfigurieren dermax_execution_time
Direktive, die die maximale Zeit definiert, die ein Skript ausgeführt werden darf.
ini_set('max_execution_time', 30); // 30 seconds
6. Zeitüberschreitungen in den systemweiten Netzwerkeinstellungen
Für systemweite Timeout-Einstellungen können Sie Folgendes konfigurierenTCPVerbindungs-Timeout-Werte mit. Diese Einstellungen steuern die Zeit, die Ihr System auf den Aufbau oder die Schließung einer TCP-Verbindung wartet.
Um das einzustellenTCPVerbindungszeitlimit, Sie können die folgenden Parameter ändern/etc/sysctl.conf
:
net.ipv4.tcp_fin_timeout
– Definiert die Zeit, die das System wartet, bis eine Verbindung geschlossen wird.net.ipv4.tcp_keepalive_time
– Legt die Zeit zwischen Keepalive-Prüfungen fest.
net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 600
Führen Sie nach dem Bearbeiten der Datei den folgenden Befehl aus, um die Änderungen zu übernehmen:
sysctl -p
Abschluss
EinstellungHTTPAnfrageAuszeitenunter Linux ist eine wesentliche Aufgabe für die Verwaltung der Serverleistung, Sicherheit und Zuverlässigkeit.
Unabhängig davon, ob Sie Befehlszeilentools wie verwendenLockenUndwgetoder das Konfigurieren von Webservern wieApacheoderNginxkönnen Sie ganz einfach steuern, wie lange Ihr System maximal auf eine Antwort von einem Server warten soll.